From f7301227d24e38c310d13371b33c0579991d21a6 Mon Sep 17 00:00:00 2001 From: xunilrj Date: Fri, 5 Jun 2026 14:53:31 -0300 Subject: [PATCH 01/42] optimisations running on loop --- sway-ir/src/optimize/conditional_constprop.rs | 7 ++--- sway-ir/src/optimize/memcpyopt.rs | 7 +++++ sway-ir/src/pass_manager.rs | 24 ++++++++++++++--- sway-ir/src/printer.rs | 27 +++++++++++-------- .../json_abi_oracle_new_encoding.release.json | 2 +- .../language/eq_custom_type/snapshot.toml | 4 +++ .../test_programs/raw_ptr/src/raw_ptr.sw | 16 +++++++++++ test/src/reduced_std_libs.rs | 12 +++++---- 8 files changed, 75 insertions(+), 24 deletions(-) create mode 100644 test/src/e2e_vm_tests/test_programs/should_pass/language/eq_custom_type/snapshot.toml diff --git a/sway-ir/src/optimize/conditional_constprop.rs b/sway-ir/src/optimize/conditional_constprop.rs index 17d7011ff77..f60c94b5a10 100644 --- a/sway-ir/src/optimize/conditional_constprop.rs +++ b/sway-ir/src/optimize/conditional_constprop.rs @@ -61,13 +61,14 @@ pub fn ccp( } } - // lets walk the dominator tree from the root. - let root_block = function.get_entry_block(context); - if dom_region_replacements.is_empty() { return Ok(false); } + // lets walk the dominator tree from the root. + let root_block = function.get_entry_block(context); + let mut modified = false; + let mut stack = vec![(root_block, 0)]; let mut replacements = FxHashMap::default(); while let Some((block, next_child)) = stack.last().cloned() { diff --git a/sway-ir/src/optimize/memcpyopt.rs b/sway-ir/src/optimize/memcpyopt.rs index 0a99af6f7de..2c834221504 100644 --- a/sway-ir/src/optimize/memcpyopt.rs +++ b/sway-ir/src/optimize/memcpyopt.rs @@ -67,6 +67,13 @@ fn local_copy_prop_prememcpy( ) -> Result { let mut modified = false; + struct InstInfo { + // The block containing the instruction. + block: Block, + // Relative (use only for comparison) position of instruction in `block`. + pos: usize, + } + // If the analysis result is incomplete we cannot do any safe optimizations here. // Calculating the candidates below relies on complete result of an escape analysis. let escaped_symbols = match analyses.get_analysis_result(function) { diff --git a/sway-ir/src/pass_manager.rs b/sway-ir/src/pass_manager.rs index 34d326efad1..40578e78286 100644 --- a/sway-ir/src/pass_manager.rs +++ b/sway-ir/src/pass_manager.rs @@ -364,11 +364,25 @@ impl PassManager { /// Run the `passes` and return true if the `passes` modify the initial `ir`. pub fn run(&mut self, ir: &mut Context, passes: &PassGroup) -> Result { - let mut modified = false; - for pass in passes.flatten_pass_group() { - modified |= self.actually_run(ir, pass)?; + let mut global_modified = false; + let passes = passes.flatten_pass_group(); + + // run until stabilize + for _ in 0..10 { + let mut modified = false; + + for pass in passes.iter() { + modified |= self.actually_run(ir, *pass)?; + } + + if !modified { + break; + } + + global_modified |= modified; } - Ok(modified) + + Ok(global_modified) } /// Run the `passes` and return true if the `passes` modify the initial `ir`. @@ -439,6 +453,8 @@ impl PassManager { if !iter_modified { break; } + + global_modified |= modified; } if print_opts.r#final { diff --git a/sway-ir/src/printer.rs b/sway-ir/src/printer.rs index 084aca8c922..263a51e57d8 100644 --- a/sway-ir/src/printer.rs +++ b/sway-ir/src/printer.rs @@ -190,18 +190,23 @@ pub fn function_print( } /// Print an instruction to stdout. -pub fn instruction_print(context: &Context, ins_value: &Value) { +pub fn instruction_print(s: &mut impl std::fmt::Write, context: &Context, ins_value: &Value) { let mut md_namer = MetadataNamer::default(); - let block = ins_value - .get_instruction(context) - .expect("Calling instruction printer on non-instruction value") - .parent; - let function = block.get_function(context); - let mut namer = Namer::new(function); - println!( - "{}", - instruction_to_doc(context, &mut md_namer, &mut namer, &block, ins_value).build() - ); + + if let Some(ins) = ins_value.get_instruction(context) { + let block = ins.parent; + let function = block.get_function(context); + let mut namer = Namer::new(function); + let _ = write!( + s, + "{}", + instruction_to_doc(context, &mut md_namer, &mut namer, &block, ins_value).build() + ); + } else if let Some(c) = ins_value.get_constant(context) { + let _ = write!(s, "const {c:?}"); + } else { + todo!(); + } } pub const MODULE_PRINTER_NAME: &str = "module-printer"; diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/configurable_consts/json_abi_oracle_new_encoding.release.json b/test/src/e2e_vm_tests/test_programs/should_pass/language/configurable_consts/json_abi_oracle_new_encoding.release.json index 9102158017e..b495c4f5108 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/configurable_consts/json_abi_oracle_new_encoding.release.json +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/configurable_consts/json_abi_oracle_new_encoding.release.json @@ -243,4 +243,4 @@ "panickingCalls": {}, "programType": "script", "specVersion": "1.2" -} \ No newline at end of file +} diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/eq_custom_type/snapshot.toml b/test/src/e2e_vm_tests/test_programs/should_pass/language/eq_custom_type/snapshot.toml new file mode 100644 index 00000000000..88b926f2fc2 --- /dev/null +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/eq_custom_type/snapshot.toml @@ -0,0 +1,4 @@ +cmds = [ + "forc build --path {root} --release", + "forc build --path {root} --release --ir final --asm final --bytecode | filter-fn {name} raw_ptr_write" +] diff --git a/test/src/in_language_tests/test_programs/raw_ptr/src/raw_ptr.sw b/test/src/in_language_tests/test_programs/raw_ptr/src/raw_ptr.sw index 0207f01196a..044cb2569c8 100644 --- a/test/src/in_language_tests/test_programs/raw_ptr/src/raw_ptr.sw +++ b/test/src/in_language_tests/test_programs/raw_ptr/src/raw_ptr.sw @@ -109,4 +109,20 @@ fn raw_ptr_overwrite_after_read() { let read_large_string_2 = buf_ptr.read::(); assert(sha256_str_array(large_string_1) == sha256_str_array(read_large_string_1)); assert(sha256_str_array(large_string_2) == sha256_str_array(read_large_string_2)); + + // calls to raw_ptr_write. + let v = [0u8; 128]; + raw_ptr_write(__addr_of(v), 0u8); + raw_ptr_write(__addr_of(v), 0u16); + raw_ptr_write(__addr_of(v), 0u32); + raw_ptr_write(__addr_of(v), 0u64); + raw_ptr_write(__addr_of(v), TestStruct { boo: false, uwu: 0 }); + + true +} + +// We expect that each monomorphization of raw_ptr::write to be optimal +#[inline(never)] +fn raw_ptr_write(ptr: raw_ptr, value: T) { + ptr.write(value) } diff --git a/test/src/reduced_std_libs.rs b/test/src/reduced_std_libs.rs index be555aafecc..461b352932f 100644 --- a/test/src/reduced_std_libs.rs +++ b/test/src/reduced_std_libs.rs @@ -28,7 +28,8 @@ fn create_reduced_std_libs(std_lib_src_dir: &str, reduced_libs_dir: &str) -> Res let std_lib_src_dir = Path::new(std_lib_src_dir); let reduced_libs_dir = Path::new(reduced_libs_dir); - for reduced_lib_dir in get_reduced_libs(reduced_libs_dir)? { + let reduced_libs = get_reduced_libs(reduced_libs_dir).context("get reduced libs")?; + for reduced_lib_dir in reduced_libs { let reduced_lib_config = reduced_lib_dir.join("reduced_lib.config"); if !reduced_lib_config.exists() { @@ -38,12 +39,13 @@ fn create_reduced_std_libs(std_lib_src_dir: &str, reduced_libs_dir: &str) -> Res )); } - let modules = get_modules_from_config(&reduced_lib_config)?; + let modules = + get_modules_from_config(&reduced_lib_config).context("get modules from config")?; for module in modules { let std_lib_module_path = std_lib_src_dir.join(&module); let reduced_lib_module_path = reduced_lib_dir.join("src").join(&module); - copy_module(&std_lib_module_path, &reduced_lib_module_path)?; + copy_module(&std_lib_module_path, &reduced_lib_module_path).context("copy module")?; } } @@ -53,9 +55,9 @@ fn create_reduced_std_libs(std_lib_src_dir: &str, reduced_libs_dir: &str) -> Res fn get_reduced_libs(reduced_libs_dir: &Path) -> Result> { let mut reduced_libs = Vec::new(); - let entries = fs::read_dir(reduced_libs_dir)?; + let entries = fs::read_dir(reduced_libs_dir).context("reading reduced libs dir")?; for entry in entries.flatten() { - if entry.metadata()?.is_dir() { + if entry.metadata().context("entry metadata failed")?.is_dir() { reduced_libs.push(entry.path()) } } From 5ccb2da1833d0202a5a1f2cc7a8927244edf0c2b Mon Sep 17 00:00:00 2001 From: xunilrj Date: Fri, 5 Jun 2026 14:57:28 -0300 Subject: [PATCH 02/42] compat script to macos --- test/update-contract-ids.sh | 36 +++++++++++++++++++++++++++++++----- 1 file changed, 31 insertions(+), 5 deletions(-) diff --git a/test/update-contract-ids.sh b/test/update-contract-ids.sh index e1f411427d8..e82ae867606 100755 --- a/test/update-contract-ids.sh +++ b/test/update-contract-ids.sh @@ -92,16 +92,42 @@ get_new_contract_id() { CONTRACT_ARGS=$(join_by " " ${CONTRACT_ARGS[@]}) if [[ $CONTRACT_ARGS ]]; then - PROJ=$(realpath "$FILE") - REGEX="0x[a-zA-Z0-9]{64}" + PROJ=$(realpath "$FOLDER/..") + echo -e "${BOLD_WHITE}$PROJ${NC}" pushd "$DIR/.." > /dev/null CONTRACT_ID=$(cargo r -p forc --release -- contract-id --path $CONTRACT_ARGS 2> /dev/null | $grep -oP "$REGEX") popd > /dev/null - # if error print error and quit - if [ $? -eq 0 ]; then - echo "$CONTRACT_ID" + if [[ $CONTRACT_ID ]]; then + popd >> /dev/null + + SED_EXPR="${LINE}s/0x[a-zA-Z0-9]*/$CONTRACT_ID/g" + + # check if there is a diff + diff -s --color <(cat $FILE) <(cat $FILE | $sed --expression="$SED_EXPR") > /dev/null + if [ $? -eq 0 ]; then + # no diff, continue + echo -e " ${BOLD_GREEN}no changes needed${NC} ($CONTRACT_ID)" + else + # diff detected, check we are clean to update files, if not abort + if [[ "$INTERACTIVELY" == "0" ]]; then + # Don´t change anything if git is dirty + if [ "$CHANGES" != "0" ]; then + echo -e " ${BOLD_RED}Aborting${NC} This contract id needs update, but git state is not clean. commit, restore first or run with \"-i\"." + echo $FILE + diff -s --color <(cat $FILE) <(cat $FILE | $sed --expression="$SED_EXPR") + exit + fi + # we are clean and can update files + $sed -i "$SED_EXPR" $FILE + else + # ask confirmation before applying the change + diff -s --color <(cat $FILE) <(cat $FILE | $sed --expression="$SED_EXPR") + ask_confirmation "$sed -i \"$SED_EXPR\" $FILE" "Update contract id" + fi + echo -e " ${BOLD_GREEN}updated${NC} ($CONTRACT_ID)" + fi else >&2 echo "cargo r -p forc --release -- contract-id --path $CONTRACT_ARGS" cargo r -p forc --release -- contract-id --path $CONTRACT_ARGS From 771d8cd014fc182284aacaa49cf09372524fdb95 Mon Sep 17 00:00:00 2001 From: xunilrj Date: Fri, 5 Jun 2026 14:57:58 -0300 Subject: [PATCH 03/42] update tests --- .../array_of_structs_caller/src/main.sw | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/array_of_structs_caller/src/main.sw b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/array_of_structs_caller/src/main.sw index 622defd9b54..62314874d05 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/array_of_structs_caller/src/main.sw +++ b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/array_of_structs_caller/src/main.sw @@ -35,9 +35,9 @@ fn main() -> u64 { let result = addr.return_element_of_array_of_structs(input); assert(result.id.number == 42); - let result = addr.return_element_of_array_of_strings([ - __to_str_array("111"), - __to_str_array("222"), + let result = addr.return_element_of_array_of_strings([ + __to_str_array("111"), + __to_str_array("222"), __to_str_array("333") ]); assert(sha256("111") == sha256_str_array(result)); From da112173f6e4503df9aade00be21fed933ca6238 Mon Sep 17 00:00:00 2001 From: xunilrj Date: Fri, 5 Jun 2026 15:08:34 -0300 Subject: [PATCH 04/42] update tests --- .../language/array/array_repeat/stdout.snap | 240 +++ .../language/const_generics/stdout.snap | 4 + .../language/intrinsics/dbg/stdout.snap | 8 + .../intrinsics/dbg_release/stdout.snap | 9 + .../language/intrinsics/transmute/stdout.snap | 4 + .../should_pass/language/logging/stdout.snap | 1001 +++++++++- .../main_args/main_args_ref/stdout.snap | 19 + .../main_args/main_args_two_u64/stdout.snap | 61 + .../main_args_various_types/stdout.snap | 1626 +++++++++++++++++ .../match_expressions_all/stdout.snap | 77 + .../panic_handling_in_unit_tests/stdout.snap | 38 + .../panicking_contract/stdout.snap | 52 + .../panicking_lib/stdout.snap | 48 + .../should_pass/stdlib/vec/stdout.snap | 20 + .../stdlib/vec_encoding_decoding/stdout.snap | 36 + .../const_of_contract_call/stdout.snap | 104 ++ 16 files changed, 3344 insertions(+), 3 deletions(-) create mode 100644 test/src/e2e_vm_tests/test_programs/should_pass/stdlib/vec/stdout.snap create mode 100644 test/src/e2e_vm_tests/test_programs/should_pass/stdlib/vec_encoding_decoding/stdout.snap diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/array/array_repeat/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/array/array_repeat/stdout.snap index f19917478f6..c8376ca551d 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/array/array_repeat/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/array/array_repeat/stdout.snap @@ -243,6 +243,7 @@ script { local slice data_ local slice s +<<<<<<< HEAD entry(mut __ret_value: __ptr [u8; 1]): v247v1 = get_local __ptr [u8; 1], __array_init_0, !104 v880v1 = const u64 0 @@ -267,6 +268,43 @@ script { v1652v1 = asm(size: v266v1, src: v2089v1) -> __ptr [u8; 1] hp, !116 { aloc size, !117 mcp hp src size, !118 +======= + entry(__ret_value: __ptr [u8; 1]): + v244v1 = get_local __ptr [u8; 1], __array_init_0, !105 + v874v1 = const u64 0 + v875v1 = get_elem_ptr v244v1, __ptr u8, v874v1, !105 + v245v1 = const u8 255, !106 + store v245v1 to v875v1, !105 + v1919v1 = get_local __ptr [u8; 1], __array_init_0 + v2037v1 = get_local __ptr slice, __ret_val + v2038v1 = call to_slice_20(v1919v1, v2037v1) + v249v1 = get_local __ptr slice, s, !107 + mem_copy_val v249v1, v2037v1 + v1893v1 = get_local __ptr slice, s, !115 + v1895v1 = get_local __ptr slice, slice_0, !118 + mem_copy_val v1895v1, v1893v1 + v1897v1 = get_local __ptr slice, slice_0, !120 + v2040v1 = asm(ptr: v1897v1) -> __ptr { ptr, u64 } ptr { + } + v2076v1 = const u64 0 + v2077v1 = get_elem_ptr v2040v1, __ptr ptr, v2076v1 + v2078v1 = load v2077v1 + v2079v1 = const u64 1 + v2080v1 = get_elem_ptr v2040v1, __ptr u64, v2079v1 + v2081v1 = load v2080v1 + v1899v1 = get_local __ptr { ptr, u64 }, __anon_00, !121 + v2090v1 = const u64 0 + v2091v1 = get_elem_ptr v1899v1, __ptr ptr, v2090v1 + store v2078v1 to v2091v1 + v2093v1 = const u64 1 + v2094v1 = get_elem_ptr v1899v1, __ptr u64, v2093v1 + store v2081v1 to v2094v1 + v1902v1 = load v2091v1, !121 + v263v1 = const u64 1 + v1628v1 = asm(size: v263v1, src: v1902v1) -> __ptr [u8; 1] hp, !123 { + aloc size, !124 + mcp hp src size, !125 +>>>>>>> a94b693b4 (update tests) } v2096v1 = const u64 0 v2097v1 = get_elem_ptr v1652v1, __ptr u8, v2096v1 @@ -278,13 +316,19 @@ script { ret () v2031v1 } +<<<<<<< HEAD fn to_slice_20(mut array: __ptr [u8; 1], mut __ret_value: __ptr slice) -> (), !121 { local { ptr, u64 } __anon_0 +======= + fn to_slice_20(array: __ptr [u8; 1], __ret_value: __ptr slice) -> (), !128 { + local mut slice __aggr_memcpy_0 +>>>>>>> a94b693b4 (update tests) local [u8; 1] array_ entry(array: __ptr [u8; 1], mut __ret_value: __ptr slice): v197v1 = get_local __ptr [u8; 1], array_ mem_copy_val v197v1, array +<<<<<<< HEAD v242v1 = cast_ptr v197v1 to ptr, !122 v929v1 = get_local __ptr { ptr, u64 }, __anon_0, !126 v883v1 = const u64 0 @@ -301,10 +345,34 @@ script { } pub fn log_47(mut value !138: u8) -> (), !141 { +======= + v238v1 = get_local __ptr [u8; 1], array_, !129 + v239v1 = cast_ptr v238v1 to ptr, !130 + v934v1 = get_local __ptr { ptr, u64 }, parts_, !135 + v2112v1 = const u64 0 + v2113v1 = get_elem_ptr v934v1, __ptr ptr, v2112v1 + store v239v1 to v2113v1 + v2115v1 = const u64 1 + v2116v1 = get_elem_ptr v934v1, __ptr u64, v2115v1 + v927v1 = const u64 1, !138 + store v927v1 to v2116v1 + v936v1 = get_local __ptr { ptr, u64 }, parts_, !140 + v2042v1 = asm(ptr: v936v1) -> __ptr slice ptr { + } + v2071v1 = get_local __ptr slice, __aggr_memcpy_0 + mem_copy_val v2071v1, v2042v1 + mem_copy_val __ret_value, v2071v1 + v2035v1 = const unit () + ret () v2035v1 + } + + pub fn log_47(value !142: u8) -> (), !145 { +>>>>>>> a94b693b4 (update tests) local { __ptr u8, u64 } __anon_0 local slice __log_arg local u8 value_ +<<<<<<< HEAD entry(mut value: u8): v638v1 = get_local __ptr u8, value_ store value to v638v1 @@ -323,6 +391,28 @@ script { log __ptr slice v2043v1, v781v1 v785v1 = const unit () ret () v785v1 +======= + entry(value: u8): + v632v1 = get_local __ptr u8, value_ + store value to v632v1 + v773v1 = get_local __ptr u8, value_, !146 + v1821v1 = get_local __ptr { __ptr u8, u64 }, __anon_0, !148 + v889v1 = const u64 0 + v1824v1 = get_elem_ptr v1821v1, __ptr __ptr u8, v889v1, !149 + store v773v1 to v1824v1, !150 + v892v1 = const u64 1 + v1826v1 = get_elem_ptr v1821v1, __ptr u64, v892v1, !151 + v642v1 = const u64 1 + store v642v1 to v1826v1, !152 + v1829v1 = get_local __ptr { __ptr u8, u64 }, __anon_0, !146 + v1831v1 = cast_ptr v1829v1 to __ptr slice, !146 + v2044v1 = get_local __ptr slice, __log_arg + mem_copy_val v2044v1, v1831v1 + v775v1 = const u64 14454674236531057292 + log __ptr slice v2044v1, v775v1 + v779v1 = const unit () + ret () v779v1 +>>>>>>> a94b693b4 (update tests) } } @@ -343,6 +433,7 @@ script { !14 = span !10 2928 2954 !15 = fn_call_path_span !10 2928 2952 !16 = (!14 !15) +<<<<<<< HEAD !17 = span !10 3038 3039 !18 = span !10 3032 3040 !19 = span !10 3042 3047 @@ -475,6 +566,144 @@ script { !146 = (!142 !143) !147 = (!142 !143) !148 = (!142 !143) +======= +!17 = span !10 3032 3037 +!18 = span !10 3038 3039 +!19 = span !10 3032 3040 +!20 = span !10 3042 3047 +!21 = span !10 3022 3048 +!22 = fn_call_path_span !10 3022 3031 +!23 = "test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-assert/src/assert.sw" +!24 = span !23 1863 1871 +!25 = fn_call_path_span !23 1866 1868 +!26 = "test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-assert/src/ops.sw" +!27 = span !26 15555 15569 +!28 = fn_call_path_span !26 15560 15562 +!29 = (!21 !22 !24 !25 !27 !28) +!30 = span !26 12573 12578 +!31 = span !26 15554 15576 +!32 = fn_call_path_span !26 15571 15574 +!33 = (!21 !22 !24 !25 !31 !32) +!34 = (!21 !22 !24) +!35 = span !23 1883 1890 +!36 = fn_call_path_span !23 1883 1886 +!37 = (!21 !22 !35 !36) +!38 = span !23 1900 1907 +!39 = fn_call_path_span !23 1900 1903 +!40 = (!21 !22 !38 !39) +!41 = span !23 1917 1948 +!42 = fn_call_path_span !23 1917 1923 +!43 = "test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-assert/src/revert.sw" +!44 = span !43 757 771 +!45 = (!21 !22 !41 !42 !44) +!46 = span !10 58 117 +!47 = fn_name_span !10 61 87 +!48 = inline "never" +!49 = (!46 !47 !48) +!50 = span !10 107 115 +!51 = span !10 220 282 +!52 = fn_name_span !10 223 250 +!53 = (!51 !52 !48) +!54 = span !10 271 280 +!55 = span !10 725 855 +!56 = fn_name_span !10 728 756 +!57 = (!55 !56 !48) +!58 = span !10 778 853 +!59 = span !10 1030 1156 +!60 = fn_name_span !10 1033 1061 +!61 = (!59 !60 !48) +!62 = span !10 1083 1154 +!63 = span !10 1327 1392 +!64 = fn_name_span !10 1330 1358 +!65 = (!63 !64 !48) +!66 = span !10 1380 1390 +!67 = span !10 135 194 +!68 = fn_name_span !10 138 162 +!69 = (!67 !68 !48) +!70 = span !10 183 192 +!71 = span !10 468 530 +!72 = fn_name_span !10 471 496 +!73 = (!71 !72 !48) +!74 = span !10 518 528 +!75 = span !10 873 1003 +!76 = fn_name_span !10 876 902 +!77 = (!75 !76 !48) +!78 = span !10 925 1001 +!79 = span !10 1174 1300 +!80 = fn_name_span !10 1177 1203 +!81 = (!79 !80 !48) +!82 = span !10 1226 1298 +!83 = span !10 1410 1475 +!84 = fn_name_span !10 1413 1439 +!85 = (!83 !84 !48) +!86 = span !10 1462 1473 +!87 = span !10 1536 1590 +!88 = fn_name_span !10 1539 1557 +!89 = (!87 !88 !48) +!90 = span !10 1579 1588 +!91 = span !10 1633 1687 +!92 = fn_name_span !10 1636 1652 +!93 = (!91 !92 !48) +!94 = span !10 1675 1685 +!95 = span !10 1781 1852 +!96 = fn_name_span !10 1784 1812 +!97 = (!95 !96 !48) +!98 = span !10 1837 1850 +!99 = span !10 1947 2196 +!100 = fn_name_span !10 1950 1974 +!101 = (!99 !100 !48) +!102 = span !10 3070 3173 +!103 = fn_name_span !10 3073 3085 +!104 = (!102 !103 !48) +!105 = span !10 3133 3140 +!106 = span !10 3134 3139 +!107 = span !10 3105 3142 +!108 = span !10 3147 3171 +!109 = fn_call_path_span !10 3147 3157 +!110 = "test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-assert/src/codec.sw" +!111 = span !110 57044 57054 +!112 = fn_call_path_span !110 57049 57052 +!113 = "test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-assert/src/raw_slice.sw" +!114 = span !113 3732 3736 +!115 = (!108 !109 !111 !112 !114) +!116 = span !113 3721 3737 +!117 = fn_call_path_span !113 3721 3731 +!118 = (!108 !109 !111 !112 !116 !117) +!119 = span !113 1685 1690 +!120 = (!108 !109 !111 !112 !116 !117 !119) +!121 = (!108 !109 !111 !112) +!122 = span !110 57023 57138 +!123 = (!108 !109 !122) +!124 = span !110 57070 57079 +!125 = span !110 57093 57108 +!126 = span !10 3192 3320 +!127 = fn_name_span !10 3195 3203 +!128 = (!126 !127 !48) +!129 = span !10 3306 3311 +!130 = span !10 3296 3312 +!131 = span !10 3268 3318 +!132 = fn_call_path_span !10 3268 3289 +!133 = span !113 2403 2446 +!134 = fn_call_path_span !113 2403 2413 +!135 = (!131 !132 !133 !134) +!136 = span !113 2420 2444 +!137 = fn_call_path_span !113 2426 2427 +!138 = (!131 !132 !136 !137) +!139 = span !113 1309 1314 +!140 = (!131 !132 !133 !134 !139) +!141 = "test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-assert/src/logging.sw" +!142 = span !141 591 596 +!143 = span !141 577 651 +!144 = fn_name_span !141 584 587 +!145 = (!143 !144) +!146 = span !141 642 647 +!147 = span !110 56206 56218 +!148 = (!146 !147) +!149 = (!146 !147) +!150 = (!146 !147) +!151 = (!146 !147) +!152 = (!146 !147) +>>>>>>> a94b693b4 (update tests) ;; ASM: Final program ;; Program kind: Script @@ -1056,15 +1285,26 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/language/array/array_repeat Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-assert) Compiling script array_repeat (test/src/e2e_vm_tests/test_programs/should_pass/language/array/array_repeat) +<<<<<<< HEAD Finished release [optimized + fuel] target(s) [1.944 KB] in ??? script array_repeat Bytecode size: 1944 bytes (1.944 KB) Bytecode hash: 0xd84e1f0af96e64ef4c4c098c44c52e6494d47aa0b5eee14850b62bbde99640fb +======= + Finished release [optimized + fuel] target(s) [2.04 KB] in ??? + script array_repeat + Bytecode size: 2040 bytes (2.04 KB) + Bytecode hash: 0x4f9edafab44fe06af95d8e015a91850559d840696e05d6ae80913d7873a73d54 +>>>>>>> a94b693b4 (update tests) Running 1 test, filtered 0 tests tested -- array_repeat +<<<<<<< HEAD test test_array_repeat_zero ... ok (???, 2624891 gas) +======= + test test_array_repeat_zero ... ok (???, 2887161 gas) +>>>>>>> a94b693b4 (update tests) test result: OK. 1 passed; 0 failed; finished in ??? diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/const_generics/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/const_generics/stdout.snap index 8547ceb51b8..dc7a4a3cb34 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/const_generics/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/const_generics/stdout.snap @@ -40,7 +40,11 @@ ____ tested -- const_generics +<<<<<<< HEAD test run_main ... ok (???, 17769 gas) +======= + test run_main ... ok (???, 19815 gas) +>>>>>>> a94b693b4 (update tests) debug output: [src/main.sw:154:13] a = [1, 2] [src/main.sw:158:13] [C {}].len() = 1 diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg/stdout.snap index 334dfb25e7f..27f6ebaa9c8 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg/stdout.snap @@ -71,12 +71,20 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg Compiling library std (sway-lib-std) Compiling script dbg (test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg) +<<<<<<< HEAD Finished debug [unoptimized + fuel] target(s) [36.48 KB] in ??? +======= + Finished debug [unoptimized + fuel] target(s) [36.664 KB] in ??? +>>>>>>> a94b693b4 (update tests) Running 1 test, filtered 0 tests tested -- dbg +<<<<<<< HEAD test call_main ... ok (???, 117840 gas) +======= + test call_main ... ok (???, 131571 gas) +>>>>>>> a94b693b4 (update tests) debug output: [src/main.sw:13:13] () = () [src/main.sw:15:13] true = true diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg_release/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg_release/stdout.snap index f037cb43833..72db0065643 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg_release/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg_release/stdout.snap @@ -33,6 +33,15 @@ ecal $r0 $r1 $zero $zero ; ecal id fd zero zero ecal $r0 $r2 $zero $zero ; ecal id fd zero zero ecal $r0 $r2 $zero $zero ; ecal id fd zero zero ecal $r0 $r1 $zero $zero ; ecal id fd zero zero +<<<<<<< HEAD +======= +ecal $r0 $r1 $zero $zero ; ecal id fd zero zero +ecal $r0 $r1 $zero $zero ; ecal id fd zero zero +ecal $r0 $r1 $zero $zero ; ecal id fd zero zero +ecal $r0 $r1 $zero $zero ; ecal id fd zero zero +ecal $r0 $r1 $zero $zero ; ecal id fd zero zero +ecal $r0 $r1 $zero $zero ; ecal id fd zero zero +>>>>>>> a94b693b4 (update tests) ecal $r2 $r3 $r0 $r1 ; ecal id fd buf count ecal $r2 $r3 $r0 $r1 ; ecal id fd buf count ecal $r3 $r4 $$locbase $one ; ecal id fd buf count diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/transmute/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/transmute/stdout.snap index 2d88cf933c7..9d2d5a3fa1d 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/transmute/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/transmute/stdout.snap @@ -8,7 +8,11 @@ fn transmute_by_reference_7(mut __ret_value: __ptr u256) -> () { local mut [u8; 32] bytes local __ptr u256 v +<<<<<<< HEAD entry(mut __ret_value: __ptr u256): +======= + entry(__ret_value: __ptr u256): +>>>>>>> a94b693b4 (update tests) v790v1 = get_local __ptr [u8; 32], __array_init_0 mem_clear_val v790v1 v792v1 = get_local __ptr [u8; 32], bytes diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/logging/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/logging/stdout.snap index 85196b254ba..f239c72828a 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/logging/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/logging/stdout.snap @@ -389,7 +389,6 @@ script { local mut { ptr, u64, u64 } __aggr_memcpy_07 local mut { u64, u64 } __aggr_memcpy_08 local mut slice __aggr_memcpy_09 - local { __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, u64 } __anon_0 local { ptr, u64, u64 } __anon_00 local { ptr, u64, u64 } __anon_000 local { ptr, u64, u64 } __anon_01 @@ -424,7 +423,6 @@ script { local { { ptr, u64, u64 } } __tmp_arg0 local { { ptr, u64, u64 } } __tmp_arg1 local slice __tmp_block_arg - local { __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, u64 } __tuple_init_0 local { ptr, u64 } __tuple_init_00 local { { ptr, u64, u64 } } buffer local { { ptr, u64, u64 } } buffer_ @@ -453,6 +451,7 @@ script { entry(item: __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }): v494v1 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, item_ mem_copy_val v494v1, item +<<<<<<< HEAD v2807v1 = const bool false, !167 cbr v2807v1, encode_allow_alias_22_is_encode_trivial_23_is_encode_trivial_24_block8(), encode_allow_alias_22_is_encode_trivial_23_is_encode_trivial_24_block9(v2807v1), !169 @@ -502,10 +501,25 @@ script { v579v1 = const u64 0 v2848v1 = get_elem_ptr v2843v1, __ptr u64, v579v1, !190 v2849v1 = load v2848v1, !191 +======= + v1057v1 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, item_, !79 + v3810v1 = get_local __ptr { { ptr, u64, u64 } }, __ret_val1 + v3811v1 = call new_6(v3810v1) + v2843v1 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, self_0, !170 + mem_copy_val v2843v1, v1057v1 + v2845v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_, !171 + mem_copy_val v2845v1, v3810v1 + v2847v1 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, self_0, !173 + v579v1 = const u64 0 + v2848v1 = get_elem_ptr v2847v1, __ptr u64, v579v1, !175 + v2849v1 = load v2848v1, !176 + v2850v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_, !178 +>>>>>>> a94b693b4 (update tests) v3704v1 = get_local __ptr { { ptr, u64, u64 } }, __tmp_arg mem_copy_val v3704v1, v2845v1 v3788v1 = get_local __ptr { { ptr, u64, u64 } }, __ret_val v3789v1 = call abi_encode_5(v2849v1, v3704v1, v3788v1) +<<<<<<< HEAD v2853v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__, !193 mem_copy_val v2853v1, v3788v1 v649v1 = const u64 1 @@ -515,10 +529,25 @@ script { v2863v1 = get_local __ptr { { ptr, u64, u64 } }, __struct_init_0, !200 v595v1 = const u64 0 v2865v1 = get_elem_ptr v2861v1, __ptr { ptr, u64, u64 }, v595v1, !201 +======= + v2853v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__, !180 + mem_copy_val v2853v1, v3788v1 + v2855v1 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, self_0, !182 + v649v1 = const u64 1 + v2856v1 = get_elem_ptr v2855v1, __ptr u64, v649v1, !184 + v2858v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__, !186 + v2861v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_0, !189 + mem_copy_val v2861v1, v2858v1 + v2863v1 = get_local __ptr { { ptr, u64, u64 } }, __struct_init_0, !191 + v2864v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_0, !193 + v595v1 = const u64 0 + v2865v1 = get_elem_ptr v2864v1, __ptr { ptr, u64, u64 }, v595v1, !194 +>>>>>>> a94b693b4 (update tests) v3855v1 = asm(buffer: v2865v1) -> __ptr { ptr, u64, u64 } buffer { } v3932v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_0 mem_copy_val v3932v1, v3855v1 +<<<<<<< HEAD v2868v1 = get_local __ptr { ptr, u64, u64 }, __anon_00, !202 mem_copy_val v2868v1, v3932v1 v601v1 = const u64 0 @@ -554,11 +583,49 @@ script { v641v1 = const u64 2 v2898v1 = get_elem_ptr v2893v1, __ptr u64, v641v1, !223 store v2877v1 to v2898v1, !224 +======= + v2868v1 = get_local __ptr { ptr, u64, u64 }, __anon_00, !195 + mem_copy_val v2868v1, v3932v1 + v601v1 = const u64 0 + v2870v1 = get_elem_ptr v2868v1, __ptr ptr, v601v1, !196 + v2871v1 = load v2870v1, !197 + v604v1 = const u64 1 + v2872v1 = get_elem_ptr v2868v1, __ptr u64, v604v1, !198 + v2873v1 = load v2872v1, !199 + v607v1 = const u64 2 + v2874v1 = get_elem_ptr v2868v1, __ptr u64, v607v1, !200 + v2875v1 = load v2874v1, !201 + v612v1 = const u64 4 + v2877v1 = add v2875v1, v612v1, !202 + v2878v1 = cmp gt v2877v1 v2873v1, !203 + cbr v2878v1, encode_allow_alias_22_abi_encode_37_abi_encode_38_block1(), encode_allow_alias_22_abi_encode_37_abi_encode_38_block0(v2871v1, v2873v1), !204 + + encode_allow_alias_22_abi_encode_37_abi_encode_38_block0(v2780v1: ptr, v2781v1: u64): + v2885v1 = get_local __ptr u64, __anon_1, !205 + mem_copy_val v2885v1, v2856v1 + v626v1 = const u64 4 + v2887v1 = add v2885v1, v626v1, !206 + v2888v1 = cast_ptr v2887v1 to __ptr u8, !207 + v2889v1 = add v2780v1, v2875v1, !208 + v2890v1 = cast_ptr v2889v1 to __ptr u8, !209 + mem_copy_bytes v2890v1, v2888v1, 4, !210 + v2893v1 = get_local __ptr { ptr, u64, u64 }, __anon_2, !211 + v635v1 = const u64 0 + v2894v1 = get_elem_ptr v2893v1, __ptr ptr, v635v1, !212 + store v2780v1 to v2894v1, !213 + v638v1 = const u64 1 + v2896v1 = get_elem_ptr v2893v1, __ptr u64, v638v1, !214 + store v2781v1 to v2896v1, !215 + v641v1 = const u64 2 + v2898v1 = get_elem_ptr v2893v1, __ptr u64, v641v1, !216 + store v2877v1 to v2898v1, !217 +>>>>>>> a94b693b4 (update tests) v3857v1 = asm(buffer: v2893v1) -> __ptr { ptr, u64, u64 } buffer { } v3936v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_00 mem_copy_val v3936v1, v3857v1 v1472v1 = const u64 0 +<<<<<<< HEAD v2901v1 = get_elem_ptr v2863v1, __ptr { ptr, u64, u64 }, v1472v1, !225 mem_copy_val v2901v1, v3936v1 v2905v1 = get_local __ptr { { ptr, u64, u64 } }, buffer___, !227 @@ -570,10 +637,27 @@ script { v2915v1 = get_local __ptr { { ptr, u64, u64 } }, __struct_init_00, !234 v665v1 = const u64 0 v2917v1 = get_elem_ptr v2913v1, __ptr { ptr, u64, u64 }, v665v1, !235 +======= + v2901v1 = get_elem_ptr v2863v1, __ptr { ptr, u64, u64 }, v1472v1, !218 + mem_copy_val v2901v1, v3936v1 + v2905v1 = get_local __ptr { { ptr, u64, u64 } }, buffer___, !220 + mem_copy_val v2905v1, v2863v1 + v2907v1 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, self_0, !222 + v719v1 = const u64 2 + v2908v1 = get_elem_ptr v2907v1, __ptr u64, v719v1, !224 + v2910v1 = get_local __ptr { { ptr, u64, u64 } }, buffer___, !226 + v2913v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_1, !229 + mem_copy_val v2913v1, v2910v1 + v2915v1 = get_local __ptr { { ptr, u64, u64 } }, __struct_init_00, !231 + v2916v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_1, !233 + v665v1 = const u64 0 + v2917v1 = get_elem_ptr v2916v1, __ptr { ptr, u64, u64 }, v665v1, !234 +>>>>>>> a94b693b4 (update tests) v3859v1 = asm(buffer: v2917v1) -> __ptr { ptr, u64, u64 } buffer { } v3941v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_01 mem_copy_val v3941v1, v3859v1 +<<<<<<< HEAD v2920v1 = get_local __ptr { ptr, u64, u64 }, __anon_000, !236 mem_copy_val v2920v1, v3941v1 v671v1 = const u64 0 @@ -619,11 +703,59 @@ script { v711v1 = const u64 2 v2950v1 = get_elem_ptr v2945v1, __ptr u64, v711v1, !261 store v2929v1 to v2950v1, !262 +======= + v2920v1 = get_local __ptr { ptr, u64, u64 }, __anon_000, !235 + mem_copy_val v2920v1, v3941v1 + v671v1 = const u64 0 + v2922v1 = get_elem_ptr v2920v1, __ptr ptr, v671v1, !236 + v2923v1 = load v2922v1, !237 + v674v1 = const u64 1 + v2924v1 = get_elem_ptr v2920v1, __ptr u64, v674v1, !238 + v2925v1 = load v2924v1, !239 + v677v1 = const u64 2 + v2926v1 = get_elem_ptr v2920v1, __ptr u64, v677v1, !240 + v2927v1 = load v2926v1, !241 + v682v1 = const u64 2 + v2929v1 = add v2927v1, v682v1, !242 + v2930v1 = cmp gt v2929v1 v2925v1, !243 + cbr v2930v1, encode_allow_alias_22_abi_encode_37_abi_encode_39_block1(), encode_allow_alias_22_abi_encode_37_abi_encode_39_block0(v2923v1, v2925v1), !244 + + encode_allow_alias_22_abi_encode_37_abi_encode_38_block1(): + v618v1 = const u64 2 + v2881v1 = mul v2873v1, v618v1, !245 + v2882v1 = add v2881v1, v612v1, !246 + v2883v1 = asm(new_cap: v2882v1, old_ptr: v2871v1, len: v2875v1) -> __ptr u8 hp, !247 { + aloc new_cap + mcp hp old_ptr len + } + br encode_allow_alias_22_abi_encode_37_abi_encode_38_block0(v2883v1, v2882v1), !248 + + encode_allow_alias_22_abi_encode_37_abi_encode_39_block0(v2783v1: ptr, v2784v1: u64): + v2937v1 = get_local __ptr u64, __anon_10, !249 + mem_copy_val v2937v1, v2908v1 + v696v1 = const u64 6 + v2939v1 = add v2937v1, v696v1, !250 + v2940v1 = cast_ptr v2939v1 to __ptr u8, !251 + v2941v1 = add v2783v1, v2927v1, !252 + v2942v1 = cast_ptr v2941v1 to __ptr u8, !253 + mem_copy_bytes v2942v1, v2940v1, 2, !254 + v2945v1 = get_local __ptr { ptr, u64, u64 }, __anon_20, !255 + v705v1 = const u64 0 + v2946v1 = get_elem_ptr v2945v1, __ptr ptr, v705v1, !256 + store v2783v1 to v2946v1, !257 + v708v1 = const u64 1 + v2948v1 = get_elem_ptr v2945v1, __ptr u64, v708v1, !258 + store v2784v1 to v2948v1, !259 + v711v1 = const u64 2 + v2950v1 = get_elem_ptr v2945v1, __ptr u64, v711v1, !260 + store v2929v1 to v2950v1, !261 +>>>>>>> a94b693b4 (update tests) v3861v1 = asm(buffer: v2945v1) -> __ptr { ptr, u64, u64 } buffer { } v3945v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_02 mem_copy_val v3945v1, v3861v1 v1475v1 = const u64 0 +<<<<<<< HEAD v2953v1 = get_elem_ptr v2915v1, __ptr { ptr, u64, u64 }, v1475v1, !263 mem_copy_val v2953v1, v3945v1 v2957v1 = get_local __ptr { { ptr, u64, u64 } }, buffer____, !265 @@ -636,10 +768,28 @@ script { v2967v1 = get_local __ptr { { ptr, u64, u64 } }, __struct_init_01, !273 v735v1 = const u64 0 v2969v1 = get_elem_ptr v2965v1, __ptr { ptr, u64, u64 }, v735v1, !274 +======= + v2953v1 = get_elem_ptr v2915v1, __ptr { ptr, u64, u64 }, v1475v1, !262 + mem_copy_val v2953v1, v3945v1 + v2957v1 = get_local __ptr { { ptr, u64, u64 } }, buffer____, !264 + mem_copy_val v2957v1, v2915v1 + v2959v1 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, self_0, !266 + v784v1 = const u64 3 + v2960v1 = get_elem_ptr v2959v1, __ptr u8, v784v1, !268 + v2961v1 = load v2960v1, !269 + v2962v1 = get_local __ptr { { ptr, u64, u64 } }, buffer____, !271 + v2965v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_2, !274 + mem_copy_val v2965v1, v2962v1 + v2967v1 = get_local __ptr { { ptr, u64, u64 } }, __struct_init_01, !276 + v2968v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_2, !278 + v735v1 = const u64 0 + v2969v1 = get_elem_ptr v2968v1, __ptr { ptr, u64, u64 }, v735v1, !279 +>>>>>>> a94b693b4 (update tests) v3863v1 = asm(buffer: v2969v1) -> __ptr { ptr, u64, u64 } buffer { } v3950v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_03 mem_copy_val v3950v1, v3863v1 +<<<<<<< HEAD v2972v1 = get_local __ptr { ptr, u64, u64 }, __anon_01, !275 mem_copy_val v2972v1, v3950v1 v741v1 = const u64 0 @@ -680,11 +830,54 @@ script { v776v1 = const u64 2 v2998v1 = get_elem_ptr v2993v1, __ptr u64, v776v1, !297 store v2981v1 to v2998v1, !298 +======= + v2972v1 = get_local __ptr { ptr, u64, u64 }, __anon_01, !280 + mem_copy_val v2972v1, v3950v1 + v741v1 = const u64 0 + v2974v1 = get_elem_ptr v2972v1, __ptr ptr, v741v1, !281 + v2975v1 = load v2974v1, !282 + v744v1 = const u64 1 + v2976v1 = get_elem_ptr v2972v1, __ptr u64, v744v1, !283 + v2977v1 = load v2976v1, !284 + v747v1 = const u64 2 + v2978v1 = get_elem_ptr v2972v1, __ptr u64, v747v1, !285 + v2979v1 = load v2978v1, !286 + v752v1 = const u64 1 + v2981v1 = add v2979v1, v752v1, !287 + v2982v1 = cmp gt v2981v1 v2977v1, !288 + cbr v2982v1, encode_allow_alias_22_abi_encode_37_abi_encode_40_block1(), encode_allow_alias_22_abi_encode_37_abi_encode_40_block0(v2975v1, v2977v1), !289 + + encode_allow_alias_22_abi_encode_37_abi_encode_39_block1(): + v688v1 = const u64 2 + v2933v1 = mul v2925v1, v688v1, !290 + v2934v1 = add v2933v1, v682v1, !291 + v2935v1 = asm(new_cap: v2934v1, old_ptr: v2923v1, len: v2927v1) -> __ptr u8 hp, !292 { + aloc new_cap + mcp hp old_ptr len + } + br encode_allow_alias_22_abi_encode_37_abi_encode_39_block0(v2935v1, v2934v1), !293 + + encode_allow_alias_22_abi_encode_37_abi_encode_40_block0(v2786v1: ptr, v2787v1: u64): + v2989v1 = add v2786v1, v2979v1, !294 + v2990v1 = cast_ptr v2989v1 to __ptr u8, !295 + store v2961v1 to v2990v1, !296 + v2993v1 = get_local __ptr { ptr, u64, u64 }, __anon_11, !297 + v770v1 = const u64 0 + v2994v1 = get_elem_ptr v2993v1, __ptr ptr, v770v1, !298 + store v2786v1 to v2994v1, !299 + v773v1 = const u64 1 + v2996v1 = get_elem_ptr v2993v1, __ptr u64, v773v1, !300 + store v2787v1 to v2996v1, !301 + v776v1 = const u64 2 + v2998v1 = get_elem_ptr v2993v1, __ptr u64, v776v1, !302 + store v2981v1 to v2998v1, !303 +>>>>>>> a94b693b4 (update tests) v3865v1 = asm(buffer: v2993v1) -> __ptr { ptr, u64, u64 } buffer { } v3953v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_04 mem_copy_val v3953v1, v3865v1 v1478v1 = const u64 0 +<<<<<<< HEAD v3001v1 = get_elem_ptr v2967v1, __ptr { ptr, u64, u64 }, v1478v1, !299 mem_copy_val v3001v1, v3953v1 v3005v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_____, !301 @@ -698,10 +891,30 @@ script { v804v1 = const u64 1 v3018v1 = get_elem_ptr v3012v1, __ptr u64, v804v1, !308 v3019v1 = load v3018v1, !309 +======= + v3001v1 = get_elem_ptr v2967v1, __ptr { ptr, u64, u64 }, v1478v1, !304 + mem_copy_val v3001v1, v3953v1 + v3005v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_____, !306 + mem_copy_val v3005v1, v2967v1 + v3007v1 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, self_0, !308 + v892v1 = const u64 4 + v3008v1 = get_elem_ptr v3007v1, __ptr { { ptr, u64 }, u64 }, v892v1, !310 + v3010v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_____, !312 + v3012v1 = get_local __ptr { { ptr, u64 }, u64 }, self_3, !315 + mem_copy_val v3012v1, v3008v1 + v3014v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_3, !316 + mem_copy_val v3014v1, v3010v1 + v3017v1 = get_local __ptr { { ptr, u64 }, u64 }, self_3, !318 + v804v1 = const u64 1 + v3018v1 = get_elem_ptr v3017v1, __ptr u64, v804v1, !319 + v3019v1 = load v3018v1, !320 + v3020v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_3, !322 +>>>>>>> a94b693b4 (update tests) v3707v1 = get_local __ptr { { ptr, u64, u64 } }, __tmp_arg0 mem_copy_val v3707v1, v3014v1 v3791v1 = get_local __ptr { { ptr, u64, u64 } }, __ret_val0 v3792v1 = call abi_encode_5(v3019v1, v3707v1, v3791v1) +<<<<<<< HEAD v3023v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__0, !311 mem_copy_val v3023v1, v3791v1 v3027v1 = get_local __ptr { ptr, u64 }, __tuple_init_00, !313 @@ -725,10 +938,42 @@ script { v3050v1 = get_local __ptr { { ptr, u64, u64 } }, __struct_init_02, !328 v820v1 = const u64 0 v3052v1 = get_elem_ptr v3046v1, __ptr { ptr, u64, u64 }, v820v1, !329 +======= + v3023v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__0, !324 + mem_copy_val v3023v1, v3791v1 + v3025v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__0, !326 + v3027v1 = get_local __ptr { ptr, u64 }, __tuple_init_00, !328 + v3028v1 = get_local __ptr { { ptr, u64 }, u64 }, self_3, !330 + v876v1 = const u64 0 + v3029v1 = get_elem_ptr v3028v1, __ptr { ptr, u64 }, v876v1, !331 + v878v1 = const u64 0 + v3030v1 = get_elem_ptr v3029v1, __ptr ptr, v878v1, !332 + v3032v1 = get_local __ptr { { ptr, u64 }, u64 }, self_3, !334 + v882v1 = const u64 1 + v3033v1 = get_elem_ptr v3032v1, __ptr u64, v882v1, !335 + v3034v1 = load v3033v1, !336 + v885v1 = const u64 8 + v3039v1 = mul v3034v1, v885v1, !339 + v1481v1 = const u64 0 + v3041v1 = get_elem_ptr v3027v1, __ptr ptr, v1481v1, !340 + mem_copy_val v3041v1, v3030v1 + v1484v1 = const u64 1 + v3043v1 = get_elem_ptr v3027v1, __ptr u64, v1484v1, !341 + store v3039v1 to v3043v1, !342 + v3046v1 = get_local __ptr { { ptr, u64, u64 } }, self_10, !345 + mem_copy_val v3046v1, v3025v1 + v3048v1 = get_local __ptr { ptr, u64 }, r_, !346 + mem_copy_val v3048v1, v3027v1 + v3050v1 = get_local __ptr { { ptr, u64, u64 } }, __struct_init_02, !348 + v3051v1 = get_local __ptr { { ptr, u64, u64 } }, self_10, !350 + v820v1 = const u64 0 + v3052v1 = get_elem_ptr v3051v1, __ptr { ptr, u64, u64 }, v820v1, !351 +>>>>>>> a94b693b4 (update tests) v3867v1 = asm(buffer: v3052v1) -> __ptr { ptr, u64, u64 } buffer { } v3964v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_05 mem_copy_val v3964v1, v3867v1 +<<<<<<< HEAD v3055v1 = get_local __ptr { ptr, u64, u64 }, __anon_02, !330 mem_copy_val v3055v1, v3964v1 v826v1 = const u64 0 @@ -765,11 +1010,51 @@ script { v3079v1 = add v2790v1, v3062v1, !348 v3080v1 = cast_ptr v3079v1 to __ptr u8, !349 v3081v1 = asm(item_ptr: v3077v1, len: v3062v1, addr: v3080v1, data_ptr, item_len, new_len) -> u64 new_len, !350 { +======= + v3055v1 = get_local __ptr { ptr, u64, u64 }, __anon_02, !352 + mem_copy_val v3055v1, v3964v1 + v826v1 = const u64 0 + v3057v1 = get_elem_ptr v3055v1, __ptr ptr, v826v1, !353 + v3058v1 = load v3057v1, !354 + v829v1 = const u64 1 + v3059v1 = get_elem_ptr v3055v1, __ptr u64, v829v1, !355 + v3060v1 = load v3059v1, !356 + v832v1 = const u64 2 + v3061v1 = get_elem_ptr v3055v1, __ptr u64, v832v1, !357 + v3062v1 = load v3061v1, !358 + v3063v1 = get_local __ptr { ptr, u64 }, r_, !360 + v3065v1 = get_local __ptr { ptr, u64 }, __anon_12, !361 + mem_copy_val v3065v1, v3063v1 + v839v1 = const u64 1 + v3067v1 = get_elem_ptr v3065v1, __ptr u64, v839v1, !362 + v3068v1 = load v3067v1, !363 + v3069v1 = add v3062v1, v3068v1, !364 + v3070v1 = cmp gt v3069v1 v3060v1, !365 + cbr v3070v1, encode_allow_alias_22_abi_encode_37_abi_encode_41_append_raw_42_block1(), encode_allow_alias_22_abi_encode_37_abi_encode_41_append_raw_42_block0(v3058v1, v3060v1), !366 + + encode_allow_alias_22_abi_encode_37_abi_encode_40_block1(): + v758v1 = const u64 2 + v2985v1 = mul v2977v1, v758v1, !367 + v2986v1 = add v2985v1, v752v1, !368 + v2987v1 = asm(new_cap: v2986v1, old_ptr: v2975v1, len: v2979v1) -> __ptr u8 hp, !369 { + aloc new_cap + mcp hp old_ptr len + } + br encode_allow_alias_22_abi_encode_37_abi_encode_40_block0(v2987v1, v2986v1), !370 + + encode_allow_alias_22_abi_encode_37_abi_encode_41_append_raw_42_block0(v2790v1: ptr, v2791v1: u64): + v3077v1 = get_local __ptr { ptr, u64 }, __anon_21, !371 + mem_copy_val v3077v1, v3063v1 + v3079v1 = add v2790v1, v3062v1, !372 + v3080v1 = cast_ptr v3079v1 to __ptr u8, !373 + v3081v1 = asm(item_ptr: v3077v1, len: v3062v1, addr: v3080v1, data_ptr, item_len, new_len) -> u64 new_len, !374 { +>>>>>>> a94b693b4 (update tests) lw item_len item_ptr i1 lw data_ptr item_ptr i0 mcp addr data_ptr item_len add new_len len item_len } +<<<<<<< HEAD v3082v1 = get_local __ptr { ptr, u64, u64 }, __anon_3, !351 v859v1 = const u64 0 v3083v1 = get_elem_ptr v3082v1, __ptr ptr, v859v1, !352 @@ -780,11 +1065,24 @@ script { v865v1 = const u64 2 v3087v1 = get_elem_ptr v3082v1, __ptr u64, v865v1, !356 store v3081v1 to v3087v1, !357 +======= + v3082v1 = get_local __ptr { ptr, u64, u64 }, __anon_3, !375 + v859v1 = const u64 0 + v3083v1 = get_elem_ptr v3082v1, __ptr ptr, v859v1, !376 + store v2790v1 to v3083v1, !377 + v862v1 = const u64 1 + v3085v1 = get_elem_ptr v3082v1, __ptr u64, v862v1, !378 + store v2791v1 to v3085v1, !379 + v865v1 = const u64 2 + v3087v1 = get_elem_ptr v3082v1, __ptr u64, v865v1, !380 + store v3081v1 to v3087v1, !381 +>>>>>>> a94b693b4 (update tests) v3869v1 = asm(buffer: v3082v1) -> __ptr { ptr, u64, u64 } buffer { } v3969v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_06 mem_copy_val v3969v1, v3869v1 v1487v1 = const u64 0 +<<<<<<< HEAD v3090v1 = get_elem_ptr v3050v1, __ptr { ptr, u64, u64 }, v1487v1, !358 mem_copy_val v3090v1, v3969v1 v3095v1 = get_local __ptr { { ptr, u64, u64 } }, buffer______, !360 @@ -798,10 +1096,29 @@ script { v3106v1 = get_local __ptr { { ptr, u64, u64 } }, __struct_init_03, !368 v908v1 = const u64 0 v3108v1 = get_elem_ptr v3104v1, __ptr { ptr, u64, u64 }, v908v1, !369 +======= + v3090v1 = get_elem_ptr v3050v1, __ptr { ptr, u64, u64 }, v1487v1, !382 + mem_copy_val v3090v1, v3969v1 + v3095v1 = get_local __ptr { { ptr, u64, u64 } }, buffer______, !384 + mem_copy_val v3095v1, v3050v1 + v3097v1 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, self_0, !386 + v964v1 = const u64 5 + v3098v1 = get_elem_ptr v3097v1, __ptr slice, v964v1, !388 + v3100v1 = get_local __ptr { { ptr, u64, u64 } }, buffer______, !390 + v3102v1 = get_local __ptr slice, self_4, !393 + mem_copy_val v3102v1, v3098v1 + v3104v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_4, !394 + mem_copy_val v3104v1, v3100v1 + v3106v1 = get_local __ptr { { ptr, u64, u64 } }, __struct_init_03, !396 + v3107v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_4, !398 + v908v1 = const u64 0 + v3108v1 = get_elem_ptr v3107v1, __ptr { ptr, u64, u64 }, v908v1, !399 +>>>>>>> a94b693b4 (update tests) v3871v1 = asm(buffer: v3108v1) -> __ptr { ptr, u64, u64 } buffer { } v3975v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_07 mem_copy_val v3975v1, v3871v1 +<<<<<<< HEAD v3111v1 = get_local __ptr { ptr, u64, u64 }, __anon_03, !370 mem_copy_val v3111v1, v3975v1 v914v1 = const u64 0 @@ -813,12 +1130,27 @@ script { v920v1 = const u64 2 v3117v1 = get_elem_ptr v3111v1, __ptr u64, v920v1, !375 v3118v1 = load v3117v1, !376 +======= + v3111v1 = get_local __ptr { ptr, u64, u64 }, __anon_03, !400 + mem_copy_val v3111v1, v3975v1 + v914v1 = const u64 0 + v3113v1 = get_elem_ptr v3111v1, __ptr ptr, v914v1, !401 + v3114v1 = load v3113v1, !402 + v917v1 = const u64 1 + v3115v1 = get_elem_ptr v3111v1, __ptr u64, v917v1, !403 + v3116v1 = load v3115v1, !404 + v920v1 = const u64 2 + v3117v1 = get_elem_ptr v3111v1, __ptr u64, v920v1, !405 + v3118v1 = load v3117v1, !406 + v3119v1 = get_local __ptr slice, self_4, !408 +>>>>>>> a94b693b4 (update tests) v3981v1 = get_local __ptr slice, __aggr_memcpy_09 mem_copy_val v3981v1, v3102v1 v3873v1 = asm(item: v3102v1) -> __ptr { u64, u64 } item { } v3978v1 = get_local __ptr { u64, u64 }, __aggr_memcpy_08 mem_copy_val v3978v1, v3873v1 +<<<<<<< HEAD v3122v1 = get_local __ptr { u64, u64 }, __anon_13, !377 mem_copy_val v3122v1, v3978v1 v928v1 = const u64 1 @@ -846,6 +1178,35 @@ script { v3137v1 = add v2794v1, v3118v1, !389 v3138v1 = cast_ptr v3137v1 to __ptr u8, !390 v3139v1 = asm(item_ptr: v3135v1, len: v3118v1, addr: v3138v1, data_ptr, item_len, new_len) -> u64 new_len, !391 { +======= + v3122v1 = get_local __ptr { u64, u64 }, __anon_13, !409 + mem_copy_val v3122v1, v3978v1 + v928v1 = const u64 1 + v3124v1 = get_elem_ptr v3122v1, __ptr u64, v928v1, !410 + v3125v1 = load v3124v1, !411 + v931v1 = const u64 8 + v3126v1 = add v3125v1, v931v1, !412 + v3127v1 = add v3118v1, v3126v1, !413 + v3128v1 = cmp gt v3127v1 v3116v1, !414 + cbr v3128v1, encode_allow_alias_22_abi_encode_37_abi_encode_43_block1(), encode_allow_alias_22_abi_encode_37_abi_encode_43_block0(v3114v1, v3116v1), !415 + + encode_allow_alias_22_abi_encode_37_abi_encode_41_append_raw_42_block1(): + v847v1 = const u64 2 + v3073v1 = mul v3060v1, v847v1, !416 + v3074v1 = add v3073v1, v3068v1, !417 + v3075v1 = asm(new_cap: v3074v1, old_ptr: v3058v1, len: v3062v1) -> __ptr u8 hp, !418 { + aloc new_cap + mcp hp old_ptr len + } + br encode_allow_alias_22_abi_encode_37_abi_encode_41_append_raw_42_block0(v3075v1, v3074v1), !419 + + encode_allow_alias_22_abi_encode_37_abi_encode_43_block0(v2794v1: ptr, v2795v1: u64): + v3135v1 = get_local __ptr slice, __anon_22, !420 + mem_copy_val v3135v1, v3981v1 + v3137v1 = add v2794v1, v3118v1, !421 + v3138v1 = cast_ptr v3137v1 to __ptr u8, !422 + v3139v1 = asm(item_ptr: v3135v1, len: v3118v1, addr: v3138v1, data_ptr, item_len, new_len) -> u64 new_len, !423 { +>>>>>>> a94b693b4 (update tests) lw item_len item_ptr i1 sw addr item_len i0 addi addr addr i8 @@ -854,6 +1215,7 @@ script { addi new_len len i8 add new_len new_len item_len } +<<<<<<< HEAD v3140v1 = get_local __ptr { ptr, u64, u64 }, __anon_30, !392 v950v1 = const u64 0 v3141v1 = get_elem_ptr v3140v1, __ptr ptr, v950v1, !393 @@ -864,11 +1226,24 @@ script { v956v1 = const u64 2 v3145v1 = get_elem_ptr v3140v1, __ptr u64, v956v1, !397 store v3139v1 to v3145v1, !398 +======= + v3140v1 = get_local __ptr { ptr, u64, u64 }, __anon_30, !424 + v950v1 = const u64 0 + v3141v1 = get_elem_ptr v3140v1, __ptr ptr, v950v1, !425 + store v2794v1 to v3141v1, !426 + v953v1 = const u64 1 + v3143v1 = get_elem_ptr v3140v1, __ptr u64, v953v1, !427 + store v2795v1 to v3143v1, !428 + v956v1 = const u64 2 + v3145v1 = get_elem_ptr v3140v1, __ptr u64, v956v1, !429 + store v3139v1 to v3145v1, !430 +>>>>>>> a94b693b4 (update tests) v3875v1 = asm(buffer: v3140v1) -> __ptr { ptr, u64, u64 } buffer { } v3984v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_010 mem_copy_val v3984v1, v3875v1 v1490v1 = const u64 0 +<<<<<<< HEAD v3148v1 = get_elem_ptr v3106v1, __ptr { ptr, u64, u64 }, v1490v1, !399 mem_copy_val v3148v1, v3984v1 v3152v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_______, !401 @@ -882,10 +1257,29 @@ script { v3163v1 = get_local __ptr { { ptr, u64, u64 } }, __struct_init_04, !409 v980v1 = const u64 0 v3165v1 = get_elem_ptr v3161v1, __ptr { ptr, u64, u64 }, v980v1, !410 +======= + v3148v1 = get_elem_ptr v3106v1, __ptr { ptr, u64, u64 }, v1490v1, !431 + mem_copy_val v3148v1, v3984v1 + v3152v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_______, !433 + mem_copy_val v3152v1, v3106v1 + v3154v1 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, self_0, !435 + v1031v1 = const u64 6 + v3155v1 = get_elem_ptr v3154v1, __ptr u256, v1031v1, !437 + v3157v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_______, !439 + v3159v1 = get_local __ptr u256, self_5, !442 + mem_copy_val v3159v1, v3155v1 + v3161v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_5, !443 + mem_copy_val v3161v1, v3157v1 + v3163v1 = get_local __ptr { { ptr, u64, u64 } }, __struct_init_04, !445 + v3164v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_5, !447 + v980v1 = const u64 0 + v3165v1 = get_elem_ptr v3164v1, __ptr { ptr, u64, u64 }, v980v1, !448 +>>>>>>> a94b693b4 (update tests) v3877v1 = asm(buffer: v3165v1) -> __ptr { ptr, u64, u64 } buffer { } v3990v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_011 mem_copy_val v3990v1, v3877v1 +<<<<<<< HEAD v3168v1 = get_local __ptr { ptr, u64, u64 }, __anon_04, !411 mem_copy_val v3168v1, v3990v1 v986v1 = const u64 0 @@ -928,23 +1322,80 @@ script { v1023v1 = const u64 2 v3197v1 = get_elem_ptr v3192v1, __ptr u64, v1023v1, !434 store v3178v1 to v3197v1, !435 +======= + v3168v1 = get_local __ptr { ptr, u64, u64 }, __anon_04, !449 + mem_copy_val v3168v1, v3990v1 + v986v1 = const u64 0 + v3170v1 = get_elem_ptr v3168v1, __ptr ptr, v986v1, !450 + v3171v1 = load v3170v1, !451 + v989v1 = const u64 1 + v3172v1 = get_elem_ptr v3168v1, __ptr u64, v989v1, !452 + v3173v1 = load v3172v1, !453 + v992v1 = const u64 2 + v3174v1 = get_elem_ptr v3168v1, __ptr u64, v992v1, !454 + v3175v1 = load v3174v1, !455 + v3176v1 = get_local __ptr u256, self_5, !457 + v997v1 = const u64 32 + v3178v1 = add v3175v1, v997v1, !458 + v3179v1 = cmp gt v3178v1 v3173v1, !459 + cbr v3179v1, encode_allow_alias_22_abi_encode_37_abi_encode_44_block1(), encode_allow_alias_22_abi_encode_37_abi_encode_44_block0(v3171v1, v3173v1), !460 + + encode_allow_alias_22_abi_encode_37_abi_encode_43_block1(): + v938v1 = const u64 2 + v3131v1 = mul v3116v1, v938v1, !461 + v3132v1 = add v3131v1, v3126v1, !462 + v3133v1 = asm(new_cap: v3132v1, old_ptr: v3114v1, len: v3118v1) -> __ptr u8 hp, !463 { + aloc new_cap + mcp hp old_ptr len + } + br encode_allow_alias_22_abi_encode_37_abi_encode_43_block0(v3133v1, v3132v1), !464 + + encode_allow_alias_22_abi_encode_37_abi_encode_44_block0(v2797v1: ptr, v2798v1: u64): + v3186v1 = get_local __ptr u256, __anon_14, !465 + mem_copy_val v3186v1, v3176v1 + v3188v1 = add v2797v1, v3175v1, !466 + v3189v1 = cast_ptr v3188v1 to __ptr u8, !467 + mem_copy_bytes v3189v1, v3186v1, 32, !468 + v3192v1 = get_local __ptr { ptr, u64, u64 }, __anon_23, !469 + v1017v1 = const u64 0 + v3193v1 = get_elem_ptr v3192v1, __ptr ptr, v1017v1, !470 + store v2797v1 to v3193v1, !471 + v1020v1 = const u64 1 + v3195v1 = get_elem_ptr v3192v1, __ptr u64, v1020v1, !472 + store v2798v1 to v3195v1, !473 + v1023v1 = const u64 2 + v3197v1 = get_elem_ptr v3192v1, __ptr u64, v1023v1, !474 + store v3178v1 to v3197v1, !475 +>>>>>>> a94b693b4 (update tests) v3879v1 = asm(buffer: v3192v1) -> __ptr { ptr, u64, u64 } buffer { } v3994v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_012 mem_copy_val v3994v1, v3879v1 v1493v1 = const u64 0 +<<<<<<< HEAD v3200v1 = get_elem_ptr v3163v1, __ptr { ptr, u64, u64 }, v1493v1, !436 mem_copy_val v3200v1, v3994v1 v3204v1 = get_local __ptr { { ptr, u64, u64 } }, buffer________, !438 mem_copy_val v3204v1, v3163v1 v3209v1 = get_local __ptr { { ptr, u64, u64 } }, buffer, !440 mem_copy_val v3209v1, v3204v1 +======= + v3200v1 = get_elem_ptr v3163v1, __ptr { ptr, u64, u64 }, v1493v1, !476 + mem_copy_val v3200v1, v3994v1 + v3204v1 = get_local __ptr { { ptr, u64, u64 } }, buffer________, !478 + mem_copy_val v3204v1, v3163v1 + v3206v1 = get_local __ptr { { ptr, u64, u64 } }, buffer________, !480 + v3209v1 = get_local __ptr { { ptr, u64, u64 } }, buffer, !482 + mem_copy_val v3209v1, v3206v1 + v3211v1 = get_local __ptr { { ptr, u64, u64 } }, buffer, !484 +>>>>>>> a94b693b4 (update tests) v3724v1 = get_local __ptr { { ptr, u64, u64 } }, __tmp_arg1 mem_copy_val v3724v1, v3209v1 v3823v1 = get_local __ptr slice, __ret_val2 v3824v1 = call as_raw_slice_7(v3724v1, v3823v1) v3742v1 = get_local __ptr slice, __tmp_block_arg mem_copy_val v3742v1, v3823v1 +<<<<<<< HEAD br encode_allow_alias_22_block2(v3742v1), !74 encode_allow_alias_22_abi_encode_37_abi_encode_44_block1(): @@ -958,15 +1409,31 @@ script { br encode_allow_alias_22_abi_encode_37_abi_encode_44_block0(v3184v1, v3183v1), !444 encode_allow_alias_22_block2(mut v3738v1: __ptr slice): +======= +>>>>>>> a94b693b4 (update tests) v3852v1 = get_local __ptr slice, __log_arg - mem_copy_val v3852v1, v3738v1 + mem_copy_val v3852v1, v3742v1 v1059v1 = const u64 4579537983717831593 log __ptr slice v3852v1, v1059v1 v1063v1 = const unit () ret () v1063v1 + + encode_allow_alias_22_abi_encode_37_abi_encode_44_block1(): + v1003v1 = const u64 2 + v3182v1 = mul v3173v1, v1003v1, !485 + v3183v1 = add v3182v1, v997v1, !486 + v3184v1 = asm(new_cap: v3183v1, old_ptr: v3171v1, len: v3175v1) -> __ptr u8 hp, !487 { + aloc new_cap + mcp hp old_ptr len + } + br encode_allow_alias_22_abi_encode_37_abi_encode_44_block0(v3184v1, v3183v1), !488 } +<<<<<<< HEAD fn local_log_46(mut item: __ptr { u64 }) -> (), !445 { +======= + fn local_log_46(item: __ptr { u64 }) -> (), !489 { +>>>>>>> a94b693b4 (update tests) local { __ptr { u64 }, u64 } __anon_0 local slice __log_arg local { u64 } item_ @@ -974,6 +1441,7 @@ script { entry(item: __ptr { u64 }): v1093v1 = get_local __ptr { u64 }, item_ mem_copy_val v1093v1, item +<<<<<<< HEAD v3303v1 = get_local __ptr { __ptr { u64 }, u64 }, __anon_0, !446 v1496v1 = const u64 0 v3306v1 = get_elem_ptr v3303v1, __ptr __ptr { u64 }, v1496v1, !447 @@ -983,6 +1451,19 @@ script { v1109v1 = const u64 8 store v1109v1 to v3308v1, !450 v3313v1 = cast_ptr v3303v1 to __ptr slice, !74 +======= + v1156v1 = get_local __ptr { u64 }, item_, !79 + v3303v1 = get_local __ptr { __ptr { u64 }, u64 }, __anon_0, !490 + v1496v1 = const u64 0 + v3306v1 = get_elem_ptr v3303v1, __ptr __ptr { u64 }, v1496v1, !491 + store v1156v1 to v3306v1, !492 + v1499v1 = const u64 1 + v3308v1 = get_elem_ptr v3303v1, __ptr u64, v1499v1, !493 + v1109v1 = const u64 8 + store v1109v1 to v3308v1, !494 + v3311v1 = get_local __ptr { __ptr { u64 }, u64 }, __anon_0, !79 + v3313v1 = cast_ptr v3311v1 to __ptr slice, !79 +>>>>>>> a94b693b4 (update tests) v3881v1 = get_local __ptr slice, __log_arg mem_copy_val v3881v1, v3313v1 v1158v1 = const u64 16566583104751091389 @@ -991,7 +1472,11 @@ script { ret () v1162v1 } +<<<<<<< HEAD fn local_log_51(mut item: __ptr { u64, ( { u64 } | () ) }) -> (), !451 { +======= + fn local_log_51(item: __ptr { u64, ( { u64 } | () ) }) -> (), !495 { +>>>>>>> a94b693b4 (update tests) local slice __log_arg local { u64, ( { u64 } | () ) } __matched_value_1 local { { ptr, u64, u64 } } __tmp_block_arg @@ -1004,6 +1489,7 @@ script { v3813v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_ v3814v1 = call new_6(v3813v1) v1219v1 = const u64 0 +<<<<<<< HEAD v3551v1 = get_elem_ptr v1170v1, __ptr u64, v1219v1, !453 v4065v1 = get_elem_ptr item, __ptr u64, v1219v1 v3552v1 = load v4065v1, !454 @@ -1040,17 +1526,71 @@ script { encode_allow_alias_52_abi_encode_57_block3(): v1256v1 = const u64 14757395258967588866, !470 revert v1256v1, !471 +======= + v4065v1 = get_elem_ptr item, __ptr u64, v1219v1 + v3552v1 = load v4065v1, !496 + v1222v1 = const u64 0, !497 + v3557v1 = cmp eq v3552v1 v1222v1, !500 + cbr v3557v1, encode_allow_alias_52_abi_encode_57_block0(), encode_allow_alias_52_abi_encode_57_block1(), !501 + + encode_allow_alias_52_abi_encode_57_block0(): + v3576v1 = get_local __ptr { u64, ( { u64 } | () ) }, __matched_value_1, !502 + v1225v1 = const u64 1 + v1226v1 = const u64 0 + v3577v1 = get_elem_ptr v3576v1, __ptr { u64 }, v1225v1, v1226v1, !503 + v3581v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_, !505 + v3797v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__ + v1231v1 = const u64 0, !506 + v3798v1 = call abi_encode_5(v1231v1, v3581v1, v3797v1) + v3755v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__ + v3836v1 = get_local __ptr { { ptr, u64, u64 } }, __tmp_block_arg + v1130v1 = const u64 0 + v3837v3 = get_elem_ptr v3577v1, __ptr u64, v1130v1, !507 + v4062v1 = load v3837v3 + v4063v1 = call abi_encode_5(v4062v1, v3755v1, v3836v1) + v3768v1 = get_local __ptr { { ptr, u64, u64 } }, __tmp_block_arg + br encode_allow_alias_52_abi_encode_57_block5(v3768v1), !508 + + encode_allow_alias_52_abi_encode_57_block1(): + v3560v1 = get_local __ptr { u64, ( { u64 } | () ) }, __matched_value_1, !509 + v1247v1 = const u64 0 + v3561v1 = get_elem_ptr v3560v1, __ptr u64, v1247v1, !510 + v3562v1 = load v3561v1, !511 + v1250v1 = const u64 1, !497 + v3567v1 = cmp eq v3562v1 v1250v1, !514 + cbr v3567v1, encode_allow_alias_52_abi_encode_57_block2(), encode_allow_alias_52_abi_encode_57_block3(), !515 + + encode_allow_alias_52_abi_encode_57_block2(): + v3571v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_, !517 + v3800v1 = get_local __ptr { { ptr, u64, u64 } }, __tmp_block_arg + v1252v1 = const u64 1, !518 + v3801v1 = call abi_encode_5(v1252v1, v3571v1, v3800v1) + v3770v1 = get_local __ptr { { ptr, u64, u64 } }, __tmp_block_arg + br encode_allow_alias_52_abi_encode_57_block5(v3770v1), !519 + + encode_allow_alias_52_abi_encode_57_block3(): + v1256v1 = const u64 14757395258967588866, !520 + revert v1256v1, !521 +>>>>>>> a94b693b4 (update tests) encode_allow_alias_52_abi_encode_57_block5(mut v3766v1: __ptr { { ptr, u64, u64 } }): v3826v1 = get_local __ptr slice, __log_arg v3827v1 = call as_raw_slice_7(v3766v1, v3826v1) +<<<<<<< HEAD +======= + v3884v1 = get_local __ptr slice, __log_arg +>>>>>>> a94b693b4 (update tests) v1287v1 = const u64 5087777005172090899 log __ptr slice v3826v1, v1287v1 v1291v1 = const unit () ret () v1291v1 } +<<<<<<< HEAD fn local_log_58(mut item: __ptr { }) -> (), !472 { +======= + fn local_log_58(item: __ptr { }) -> (), !522 { +>>>>>>> a94b693b4 (update tests) local slice __log_arg local { { ptr, u64, u64 } } buffer local { { ptr, u64, u64 } } buffer_ @@ -1059,8 +1599,14 @@ script { v3816v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_ v3817v1 = call new_6(v3816v1) v3803v1 = get_local __ptr { { ptr, u64, u64 } }, buffer +<<<<<<< HEAD v1346v1 = const u64 77, !473 v3804v1 = call abi_encode_5(v1346v1, v3816v1, v3803v1) +======= + v1346v1 = const u64 77, !523 + v3804v1 = call abi_encode_5(v1346v1, v3719v1, v3803v1) + v3730v1 = get_local __ptr { { ptr, u64, u64 } }, buffer +>>>>>>> a94b693b4 (update tests) v3829v1 = get_local __ptr slice, __log_arg v3830v1 = call as_raw_slice_7(v3803v1, v3829v1) v1368v1 = const u64 5555909392781521367 @@ -1160,6 +1706,7 @@ script { !87 = span !10 200 300 !88 = fn_name_span !10 207 210 !89 = (!87 !88) +<<<<<<< HEAD !90 = span !10 231 294 !91 = span !10 1106 1198 !92 = fn_name_span !10 1109 1121 @@ -1544,6 +2091,442 @@ script { !471 = (!74 !185 !186 !470) !472 = (!70 !71 !72) !473 = span !13 433 438 +======= +!90 = span !11 4938 5021 +!91 = span !11 4990 4996 +!92 = span !11 127 154 +!93 = span !11 200 300 +!94 = fn_name_span !11 207 210 +!95 = (!93 !94) +!96 = span !11 231 294 +!97 = span !11 692 784 +!98 = fn_name_span !11 695 707 +!99 = (!97 !98) +!100 = span !11 766 770 +!101 = span !24 5773 5777 +!102 = span !24 5779 5784 +!103 = span !24 5753 6218 +!104 = fn_name_span !24 5760 5764 +!105 = (!103 !104) +!106 = span !24 3556 3564 +!107 = span !24 3536 3550 +!108 = span !24 388 396 +!109 = span !24 5865 5889 +!110 = fn_call_path_span !24 5874 5876 +!111 = (!109 !110) +!112 = span !24 5904 5919 +!113 = fn_call_path_span !24 5913 5917 +!114 = (!112 !113) +!115 = span !24 3003 3004 +!116 = span !24 2991 3004 +!117 = fn_call_path_span !24 3000 3002 +!118 = (!112 !113 !116 !117) +!119 = span !24 3007 3008 +!120 = (!112 !113 !116) +!121 = span !24 3018 3019 +!122 = span !24 3018 3030 +!123 = fn_call_path_span !24 3020 3021 +!124 = (!112 !113 !122 !123) +!125 = span !24 370 382 +!126 = (!112 !113 !125) +!127 = span !24 3054 3095 +!128 = fn_call_path_span !24 3054 3061 +!129 = span !34 2578 2595 +!130 = fn_call_path_span !34 2588 2589 +!131 = (!112 !113 !127 !128 !129 !130) +!132 = (!112 !113 !127 !128 !129) +!133 = span !34 2620 2641 +!134 = fn_call_path_span !34 2620 2625 +!135 = (!112 !113 !127 !128 !133 !134 !35) +!136 = span !34 2662 2663 +!137 = span !34 2654 2663 +!138 = fn_call_path_span !34 2660 2661 +!139 = (!112 !113 !127 !128 !137 !138) +!140 = (!112 !113 !127 !128 !137) +!141 = span !34 2678 2710 +!142 = fn_call_path_span !34 2682 2689 +!143 = "test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-vec/src/raw_ptr.sw" +!144 = span !143 3413 3437 +!145 = fn_call_path_span !143 3419 3420 +!146 = (!112 !113 !127 !128 !141 !142 !144 !145) +!147 = span !143 3447 3522 +!148 = (!112 !113 !127 !128 !141 !142 !147) +!149 = span !143 3496 3511 +!150 = (!112 !113 !127 !128) +!151 = span !24 3043 3095 +!152 = (!112 !113 !151) +!153 = span !24 3105 3123 +!154 = (!112 !113 !153) +!155 = span !24 6053 6084 +!156 = fn_call_path_span !24 6066 6069 +!157 = (!155 !156) +!158 = span !24 6137 6158 +!159 = fn_call_path_span !24 6141 6146 +!160 = span !143 4229 4292 +!161 = (!158 !159 !160) +!162 = span !143 4268 4281 +!163 = span !24 6210 6211 +!164 = span !24 6198 6211 +!165 = fn_call_path_span !24 6207 6209 +!166 = (!164 !165) +!167 = (!75 !76 !77) +!168 = span !11 56254 56287 +!169 = fn_call_path_span !11 56262 56272 +!170 = (!79 !168 !169) +!171 = (!79 !168 !169) +!172 = span !0 556 560 +!173 = (!79 !168 !169 !172) +!174 = span !14 116 122 +!175 = (!79 !168 !169 !174) +!176 = (!79 !168 !169) +!177 = span !0 574 580 +!178 = (!79 !168 !169 !177) +!179 = span !0 543 582 +!180 = (!79 !168 !169 !179) +!181 = span !0 596 600 +!182 = (!79 !168 !169 !181) +!183 = span !14 128 134 +!184 = (!79 !168 !169 !183) +!185 = span !0 614 620 +!186 = (!79 !168 !169 !185) +!187 = span !0 596 621 +!188 = fn_call_path_span !0 603 613 +!189 = (!79 !168 !169 !187 !188) +!190 = span !11 5173 5256 +!191 = (!79 !168 !169 !187 !188 !190) +!192 = span !11 5225 5231 +!193 = (!79 !168 !169 !187 !188 !192) +!194 = (!79 !168 !169 !187 !188 !92) +!195 = (!79 !168 !169 !187 !188) +!196 = (!79 !168 !169 !187 !188) +!197 = (!79 !168 !169 !187 !188) +!198 = (!79 !168 !169 !187 !188) +!199 = (!79 !168 !169 !187 !188) +!200 = (!79 !168 !169 !187 !188) +!201 = (!79 !168 !169 !187 !188) +!202 = (!79 !168 !169 !187 !188) +!203 = (!79 !168 !169 !187 !188) +!204 = (!79 !168 !169 !187 !188) +!205 = (!79 !168 !169 !187 !188) +!206 = (!79 !168 !169 !187 !188) +!207 = (!79 !168 !169 !187 !188) +!208 = (!79 !168 !169 !187 !188) +!209 = (!79 !168 !169 !187 !188) +!210 = (!79 !168 !169 !187 !188) +!211 = (!79 !168 !169 !187 !188) +!212 = (!79 !168 !169 !187 !188) +!213 = (!79 !168 !169 !187 !188) +!214 = (!79 !168 !169 !187 !188) +!215 = (!79 !168 !169 !187 !188) +!216 = (!79 !168 !169 !187 !188) +!217 = (!79 !168 !169 !187 !188) +!218 = (!79 !168 !169 !187 !188 !190) +!219 = span !0 583 622 +!220 = (!79 !168 !169 !219) +!221 = span !0 636 640 +!222 = (!79 !168 !169 !221) +!223 = span !14 140 146 +!224 = (!79 !168 !169 !223) +!225 = span !0 654 660 +!226 = (!79 !168 !169 !225) +!227 = span !0 636 661 +!228 = fn_call_path_span !0 643 653 +!229 = (!79 !168 !169 !227 !228) +!230 = span !11 5408 5491 +!231 = (!79 !168 !169 !227 !228 !230) +!232 = span !11 5460 5466 +!233 = (!79 !168 !169 !227 !228 !232) +!234 = (!79 !168 !169 !227 !228 !92) +!235 = (!79 !168 !169 !227 !228) +!236 = (!79 !168 !169 !227 !228) +!237 = (!79 !168 !169 !227 !228) +!238 = (!79 !168 !169 !227 !228) +!239 = (!79 !168 !169 !227 !228) +!240 = (!79 !168 !169 !227 !228) +!241 = (!79 !168 !169 !227 !228) +!242 = (!79 !168 !169 !227 !228) +!243 = (!79 !168 !169 !227 !228) +!244 = (!79 !168 !169 !227 !228) +!245 = (!79 !168 !169 !187 !188) +!246 = (!79 !168 !169 !187 !188) +!247 = (!79 !168 !169 !187 !188) +!248 = (!79 !168 !169 !187 !188) +!249 = (!79 !168 !169 !227 !228) +!250 = (!79 !168 !169 !227 !228) +!251 = (!79 !168 !169 !227 !228) +!252 = (!79 !168 !169 !227 !228) +!253 = (!79 !168 !169 !227 !228) +!254 = (!79 !168 !169 !227 !228) +!255 = (!79 !168 !169 !227 !228) +!256 = (!79 !168 !169 !227 !228) +!257 = (!79 !168 !169 !227 !228) +!258 = (!79 !168 !169 !227 !228) +!259 = (!79 !168 !169 !227 !228) +!260 = (!79 !168 !169 !227 !228) +!261 = (!79 !168 !169 !227 !228) +!262 = (!79 !168 !169 !227 !228 !230) +!263 = span !0 623 662 +!264 = (!79 !168 !169 !263) +!265 = span !0 676 680 +!266 = (!79 !168 !169 !265) +!267 = span !14 152 157 +!268 = (!79 !168 !169 !267) +!269 = (!79 !168 !169) +!270 = span !0 694 700 +!271 = (!79 !168 !169 !270) +!272 = span !0 676 701 +!273 = fn_call_path_span !0 683 693 +!274 = (!79 !168 !169 !272 !273) +!275 = span !11 5641 5724 +!276 = (!79 !168 !169 !272 !273 !275) +!277 = span !11 5693 5699 +!278 = (!79 !168 !169 !272 !273 !277) +!279 = (!79 !168 !169 !272 !273 !92) +!280 = (!79 !168 !169 !272 !273) +!281 = (!79 !168 !169 !272 !273) +!282 = (!79 !168 !169 !272 !273) +!283 = (!79 !168 !169 !272 !273) +!284 = (!79 !168 !169 !272 !273) +!285 = (!79 !168 !169 !272 !273) +!286 = (!79 !168 !169 !272 !273) +!287 = (!79 !168 !169 !272 !273) +!288 = (!79 !168 !169 !272 !273) +!289 = (!79 !168 !169 !272 !273) +!290 = (!79 !168 !169 !227 !228) +!291 = (!79 !168 !169 !227 !228) +!292 = (!79 !168 !169 !227 !228) +!293 = (!79 !168 !169 !227 !228) +!294 = (!79 !168 !169 !272 !273) +!295 = (!79 !168 !169 !272 !273) +!296 = (!79 !168 !169 !272 !273) +!297 = (!79 !168 !169 !272 !273) +!298 = (!79 !168 !169 !272 !273) +!299 = (!79 !168 !169 !272 !273) +!300 = (!79 !168 !169 !272 !273) +!301 = (!79 !168 !169 !272 !273) +!302 = (!79 !168 !169 !272 !273) +!303 = (!79 !168 !169 !272 !273) +!304 = (!79 !168 !169 !272 !273 !275) +!305 = span !0 663 702 +!306 = (!79 !168 !169 !305) +!307 = span !0 716 720 +!308 = (!79 !168 !169 !307) +!309 = span !14 163 174 +!310 = (!79 !168 !169 !309) +!311 = span !0 734 740 +!312 = (!79 !168 !169 !311) +!313 = span !0 716 741 +!314 = fn_call_path_span !0 723 733 +!315 = (!79 !168 !169 !313 !314) +!316 = (!79 !168 !169 !313 !314) +!317 = span !24 21709 21713 +!318 = (!79 !168 !169 !313 !314 !317) +!319 = (!79 !168 !169 !313 !314 !106) +!320 = (!79 !168 !169 !313 !314) +!321 = span !24 21729 21735 +!322 = (!79 !168 !169 !313 !314 !321) +!323 = span !24 21696 21737 +!324 = (!79 !168 !169 !313 !314 !323) +!325 = span !24 21750 21756 +!326 = (!79 !168 !169 !313 !314 !325) +!327 = span !24 21768 21811 +!328 = (!79 !168 !169 !313 !314 !327) +!329 = span !24 21769 21773 +!330 = (!79 !168 !169 !313 !314 !329) +!331 = (!79 !168 !169 !313 !314 !107) +!332 = (!79 !168 !169 !313 !314 !125) +!333 = span !24 21783 21787 +!334 = (!79 !168 !169 !313 !314 !333) +!335 = (!79 !168 !169 !313 !314 !106) +!336 = (!79 !168 !169 !313 !314) +!337 = span !24 21783 21810 +!338 = fn_call_path_span !24 21792 21793 +!339 = (!79 !168 !169 !313 !314 !337 !338) +!340 = (!79 !168 !169 !313 !314 !327) +!341 = (!79 !168 !169 !313 !314 !327) +!342 = (!79 !168 !169 !313 !314 !327) +!343 = span !24 21750 21812 +!344 = fn_call_path_span !24 21757 21767 +!345 = (!79 !168 !169 !313 !314 !343 !344) +!346 = (!79 !168 !169 !313 !314 !343 !344) +!347 = span !11 571 649 +!348 = (!79 !168 !169 !313 !314 !343 !344 !347) +!349 = span !11 623 627 +!350 = (!79 !168 !169 !313 !314 !343 !344 !349) +!351 = (!79 !168 !169 !313 !314 !343 !344 !92) +!352 = (!79 !168 !169 !313 !314 !343 !344) +!353 = (!79 !168 !169 !313 !314 !343 !344) +!354 = (!79 !168 !169 !313 !314 !343 !344) +!355 = (!79 !168 !169 !313 !314 !343 !344) +!356 = (!79 !168 !169 !313 !314 !343 !344) +!357 = (!79 !168 !169 !313 !314 !343 !344) +!358 = (!79 !168 !169 !313 !314 !343 !344) +!359 = span !11 636 637 +!360 = (!79 !168 !169 !313 !314 !343 !344 !359) +!361 = (!79 !168 !169 !313 !314 !343 !344) +!362 = (!79 !168 !169 !313 !314 !343 !344) +!363 = (!79 !168 !169 !313 !314 !343 !344) +!364 = (!79 !168 !169 !313 !314 !343 !344) +!365 = (!79 !168 !169 !313 !314 !343 !344) +!366 = (!79 !168 !169 !313 !314 !343 !344) +!367 = (!79 !168 !169 !272 !273) +!368 = (!79 !168 !169 !272 !273) +!369 = (!79 !168 !169 !272 !273) +!370 = (!79 !168 !169 !272 !273) +!371 = (!79 !168 !169 !313 !314 !343 !344) +!372 = (!79 !168 !169 !313 !314 !343 !344) +!373 = (!79 !168 !169 !313 !314 !343 !344) +!374 = (!79 !168 !169 !313 !314 !343 !344) +!375 = (!79 !168 !169 !313 !314 !343 !344) +!376 = (!79 !168 !169 !313 !314 !343 !344) +!377 = (!79 !168 !169 !313 !314 !343 !344) +!378 = (!79 !168 !169 !313 !314 !343 !344) +!379 = (!79 !168 !169 !313 !314 !343 !344) +!380 = (!79 !168 !169 !313 !314 !343 !344) +!381 = (!79 !168 !169 !313 !314 !343 !344) +!382 = (!79 !168 !169 !313 !314 !343 !344 !347) +!383 = span !0 703 742 +!384 = (!79 !168 !169 !383) +!385 = span !0 756 760 +!386 = (!79 !168 !169 !385) +!387 = span !14 180 186 +!388 = (!79 !168 !169 !387) +!389 = span !0 774 780 +!390 = (!79 !168 !169 !389) +!391 = span !0 756 781 +!392 = fn_call_path_span !0 763 773 +!393 = (!79 !168 !169 !391 !392) +!394 = (!79 !168 !169 !391 !392) +!395 = span !11 5912 5995 +!396 = (!79 !168 !169 !391 !392 !395) +!397 = span !11 5964 5970 +!398 = (!79 !168 !169 !391 !392 !397) +!399 = (!79 !168 !169 !391 !392 !92) +!400 = (!79 !168 !169 !391 !392) +!401 = (!79 !168 !169 !391 !392) +!402 = (!79 !168 !169 !391 !392) +!403 = (!79 !168 !169 !391 !392) +!404 = (!79 !168 !169 !391 !392) +!405 = (!79 !168 !169 !391 !392) +!406 = (!79 !168 !169 !391 !392) +!407 = span !11 5979 5983 +!408 = (!79 !168 !169 !391 !392 !407) +!409 = (!79 !168 !169 !391 !392) +!410 = (!79 !168 !169 !391 !392) +!411 = (!79 !168 !169 !391 !392) +!412 = (!79 !168 !169 !391 !392) +!413 = (!79 !168 !169 !391 !392) +!414 = (!79 !168 !169 !391 !392) +!415 = (!79 !168 !169 !391 !392) +!416 = (!79 !168 !169 !313 !314 !343 !344) +!417 = (!79 !168 !169 !313 !314 !343 !344) +!418 = (!79 !168 !169 !313 !314 !343 !344) +!419 = (!79 !168 !169 !313 !314 !343 !344) +!420 = (!79 !168 !169 !391 !392) +!421 = (!79 !168 !169 !391 !392) +!422 = (!79 !168 !169 !391 !392) +!423 = (!79 !168 !169 !391 !392) +!424 = (!79 !168 !169 !391 !392) +!425 = (!79 !168 !169 !391 !392) +!426 = (!79 !168 !169 !391 !392) +!427 = (!79 !168 !169 !391 !392) +!428 = (!79 !168 !169 !391 !392) +!429 = (!79 !168 !169 !391 !392) +!430 = (!79 !168 !169 !391 !392) +!431 = (!79 !168 !169 !391 !392 !395) +!432 = span !0 743 782 +!433 = (!79 !168 !169 !432) +!434 = span !0 796 800 +!435 = (!79 !168 !169 !434) +!436 = span !14 192 199 +!437 = (!79 !168 !169 !436) +!438 = span !0 814 820 +!439 = (!79 !168 !169 !438) +!440 = span !0 796 821 +!441 = fn_call_path_span !0 803 813 +!442 = (!79 !168 !169 !440 !441) +!443 = (!79 !168 !169 !440 !441) +!444 = span !11 4704 4787 +!445 = (!79 !168 !169 !440 !441 !444) +!446 = span !11 4756 4762 +!447 = (!79 !168 !169 !440 !441 !446) +!448 = (!79 !168 !169 !440 !441 !92) +!449 = (!79 !168 !169 !440 !441) +!450 = (!79 !168 !169 !440 !441) +!451 = (!79 !168 !169 !440 !441) +!452 = (!79 !168 !169 !440 !441) +!453 = (!79 !168 !169 !440 !441) +!454 = (!79 !168 !169 !440 !441) +!455 = (!79 !168 !169 !440 !441) +!456 = span !11 4771 4775 +!457 = (!79 !168 !169 !440 !441 !456) +!458 = (!79 !168 !169 !440 !441) +!459 = (!79 !168 !169 !440 !441) +!460 = (!79 !168 !169 !440 !441) +!461 = (!79 !168 !169 !391 !392) +!462 = (!79 !168 !169 !391 !392) +!463 = (!79 !168 !169 !391 !392) +!464 = (!79 !168 !169 !391 !392) +!465 = (!79 !168 !169 !440 !441) +!466 = (!79 !168 !169 !440 !441) +!467 = (!79 !168 !169 !440 !441) +!468 = (!79 !168 !169 !440 !441) +!469 = (!79 !168 !169 !440 !441) +!470 = (!79 !168 !169 !440 !441) +!471 = (!79 !168 !169 !440 !441) +!472 = (!79 !168 !169 !440 !441) +!473 = (!79 !168 !169 !440 !441) +!474 = (!79 !168 !169 !440 !441) +!475 = (!79 !168 !169 !440 !441) +!476 = (!79 !168 !169 !440 !441 !444) +!477 = span !0 783 822 +!478 = (!79 !168 !169 !477) +!479 = span !0 840 846 +!480 = (!79 !168 !169 !479) +!481 = span !11 56241 56288 +!482 = (!79 !481) +!483 = span !11 56297 56303 +!484 = (!79 !483) +!485 = (!79 !168 !169 !440 !441) +!486 = (!79 !168 !169 !440 !441) +!487 = (!79 !168 !169 !440 !441) +!488 = (!79 !168 !169 !440 !441) +!489 = (!75 !76 !77) +!490 = (!79 !80) +!491 = (!79 !80) +!492 = (!79 !80) +!493 = (!79 !80) +!494 = (!79 !80) +!495 = (!75 !76 !77) +!496 = (!79 !168 !169) +!497 = span !0 410 414 +!498 = span !0 417 612 +!499 = fn_call_path_span !0 417 612 +!500 = (!79 !168 !169 !498 !499) +!501 = (!79 !168 !169 !498) +!502 = (!79 !168 !169 !497) +!503 = (!79 !168 !169) +!504 = span !0 487 493 +!505 = (!79 !168 !169 !504) +!506 = span !0 471 475 +!507 = span !14 92 97 +!508 = (!79 !168 !169) +!509 = (!79 !168 !169 !497) +!510 = (!79 !168 !169 !497) +!511 = (!79 !168 !169) +!512 = span !0 614 694 +!513 = fn_call_path_span !0 614 694 +!514 = (!79 !168 !169 !512 !513) +!515 = (!79 !168 !169 !512) +!516 = span !0 664 670 +!517 = (!79 !168 !169 !516) +!518 = span !0 648 652 +!519 = (!79 !168 !169) +!520 = span !0 404 698 +!521 = (!79 !168 !169 !520) +!522 = (!75 !76 !77) +!523 = span !14 433 438 +>>>>>>> a94b693b4 (update tests) warning --> test/src/e2e_vm_tests/test_programs/should_pass/language/logging/src/main.sw:27:5 @@ -1621,7 +2604,11 @@ warning ____ Compiled script "logging" with 6 warnings. +<<<<<<< HEAD Finished release [optimized + fuel] target(s) [2.488 KB] in ??? +======= + Finished release [optimized + fuel] target(s) [2.656 KB] in ??? +>>>>>>> a94b693b4 (update tests) > forc test --path test/src/e2e_vm_tests/test_programs/should_pass/language/logging --release exit status: 0 @@ -1717,12 +2704,20 @@ warning ____ Compiled script "logging" with 7 warnings. +<<<<<<< HEAD Finished release [optimized + fuel] target(s) [2.496 KB] in ??? +======= + Finished release [optimized + fuel] target(s) [2.672 KB] in ??? +>>>>>>> a94b693b4 (update tests) Running 1 test, filtered 0 tests tested -- logging +<<<<<<< HEAD test call_main ... ok (???, 4355 gas) +======= + test call_main ... ok (???, 4403 gas) +>>>>>>> a94b693b4 (update tests) test result: OK. 1 passed; 0 failed; finished in ??? diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_ref/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_ref/stdout.snap index ea6abe4d625..dc5813dcd01 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_ref/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_ref/stdout.snap @@ -202,7 +202,11 @@ script { retd v839v1 v841v1, !166 } +<<<<<<< HEAD entry_orig fn main_15(mut baba: __ptr { u64 }) -> u64, !170 { +======= + entry_orig fn main_15(baba: __ptr { u64 }) -> u64, !170 { +>>>>>>> a94b693b4 (update tests) local u64 other_ entry(baba: __ptr { u64 }): @@ -373,6 +377,7 @@ script { !151 = span !0 170 204 !152 = fn_call_path_span !0 170 187 !153 = (!151 !152) +<<<<<<< HEAD !154 = span !4 56805 56854 !155 = (!151 !152 !154) !156 = span !4 56830 56854 @@ -385,6 +390,20 @@ script { !163 = span !4 56942 56946 !164 = (!151 !152 !163) !165 = span !4 56921 56947 +======= +!154 = span !4 56401 56450 +!155 = (!151 !152 !154) +!156 = span !4 56426 56450 +!157 = (!151 !152 !154) +!158 = span !4 56480 56508 +!159 = (!151 !152 !158) +!160 = (!151 !152 !158) +!161 = span !4 56532 56536 +!162 = (!151 !152 !161) +!163 = span !4 56538 56542 +!164 = (!151 !152 !163) +!165 = span !4 56517 56543 +>>>>>>> a94b693b4 (update tests) !166 = (!151 !152 !165) !167 = "test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_ref/src/main.sw" !168 = span !167 46 99 diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_two_u64/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_two_u64/stdout.snap index c2bd64e678a..51a7d6cfdba 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_two_u64/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_two_u64/stdout.snap @@ -41,6 +41,7 @@ script { mem_copy_val v481v1, v484v1 v140v1 = get_local __ptr { u64, u64 }, args, !16 mem_copy_val v140v1, v481v1 +<<<<<<< HEAD v167v1 = const u64 0 v168v1 = get_elem_ptr v140v1, __ptr u64, v167v1, !17 v169v1 = load v168v1 @@ -57,6 +58,27 @@ script { entry_orig fn main_11(mut baba !28: u64, mut keke !29: u64) -> u64, !32 { entry(mut baba: u64, mut keke: u64): v379v1 = add baba, keke, !35 +======= + v166v1 = get_local __ptr { u64, u64 }, args, !17 + v167v1 = const u64 0 + v168v1 = get_elem_ptr v166v1, __ptr u64, v167v1, !18 + v169v1 = load v168v1 + v170v1 = get_local __ptr { u64, u64 }, args, !19 + v171v1 = const u64 1 + v172v1 = get_elem_ptr v170v1, __ptr u64, v171v1, !20 + v173v1 = load v172v1 + v174v1 = call main_11(v169v1, v173v1), !23 + v175v1 = get_local __ptr u64, _result, !24 + store v174v1 to v175v1, !24 + v194v1 = get_local __ptr u64, _result, !25 + v185v1 = const u64 8 + retd v194v1 v185v1, !29 + } + + entry_orig fn main_11(baba !31: u64, keke !32: u64) -> u64, !35 { + entry(baba: u64, keke: u64): + v379v1 = add baba, keke, !38 +>>>>>>> a94b693b4 (update tests) ret u64 v379v1 } } @@ -74,6 +96,7 @@ script { !10 = span !4 2132 2156 !11 = (!6 !7 !8 !9 !10) !12 = (!6 !7 !8 !9 !10) +<<<<<<< HEAD !13 = span !4 106510 106568 !14 = fn_call_path_span !4 106510 106529 !15 = (!6 !7 !13 !14) @@ -97,6 +120,34 @@ script { !33 = span !27 52 63 !34 = fn_call_path_span !27 57 58 !35 = (!33 !34) +======= +!13 = span !4 106109 106167 +!14 = fn_call_path_span !4 106109 106128 +!15 = (!6 !7 !13 !14) +!16 = span !0 40 100 +!17 = span !0 141 145 +!18 = span !0 146 147 +!19 = span !0 149 153 +!20 = span !0 154 155 +!21 = span !0 136 156 +!22 = fn_call_path_span !0 136 140 +!23 = (!21 !22) +!24 = span !0 117 157 +!25 = span !0 200 207 +!26 = span !0 174 208 +!27 = fn_call_path_span !0 174 191 +!28 = span !4 56517 56543 +!29 = (!26 !27 !28) +!30 = "test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_two_u64/src/main.sw" +!31 = span !30 17 21 +!32 = span !30 28 32 +!33 = span !30 9 65 +!34 = fn_name_span !30 12 16 +!35 = (!33 !34) +!36 = span !30 52 63 +!37 = fn_call_path_span !30 57 58 +!38 = (!36 !37) +>>>>>>> a94b693b4 (update tests) ;; ASM: Final program ;; Program kind: Script @@ -123,8 +174,13 @@ lw $r1 $$locbase i6 ; load word move $$arg0 $r0 ; [call: main_11]: pass argument 0 move $$arg1 $r1 ; [call: main_11]: pass argument 1 jal $$reta $pc i5 ; [call: main_11]: call function +<<<<<<< HEAD addi $r0 $$locbase i32 ; get offset to local __ptr u64 sw $$locbase $$retv i4 ; store word +======= +sw $$locbase $$retv i4 ; store word +addi $r0 $$locbase i32 ; get offset to local __ptr u64 +>>>>>>> a94b693b4 (update tests) movi $r1 i8 ; initialize constant into register retd $r0 $r1 ; [entry end: __entry] return slice pshh i528384 ; [fn init: main_11]: push used high registers 40..64 @@ -156,8 +212,13 @@ jal $zero $$reta i0 ; [fn end: main_11] return from call 0x00000048 MOVE R58 R52 ;; [26, 235, 64, 0] 0x0000004c MOVE R57 R51 ;; [26, 231, 48, 0] 0x00000050 JAL R62 $pc 0x5 ;; [153, 248, 48, 5] +<<<<<<< HEAD 0x00000054 ADDI R52 R59 0x20 ;; [80, 211, 176, 32] 0x00000058 SW R59 R61 0x4 ;; [95, 239, 208, 4] +======= +0x00000054 SW R59 R61 0x4 ;; [95, 239, 208, 4] +0x00000058 ADDI R52 R59 0x20 ;; [80, 211, 176, 32] +>>>>>>> a94b693b4 (update tests) 0x0000005c MOVI R51 0x8 ;; [114, 204, 0, 8] 0x00000060 RETD R52 R51 ;; [37, 211, 48, 0] 0x00000064 PSHH 0x81000 ;; [150, 8, 16, 0] diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_various_types/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_various_types/stdout.snap index 8c800aa1d4b..c25d11b2d93 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_various_types/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_various_types/stdout.snap @@ -261,10 +261,13 @@ script { local slice __tmp_arg6 local { { ptr, u64, u64 } } __tmp_block_arg local slice __tmp_block_arg0 +<<<<<<< HEAD local { ptr, u64 } __tuple_1_ local { ptr, u64 } __tuple_1_0 local string<3> a_ local string<3> a_0 +======= +>>>>>>> a94b693b4 (update tests) local { { ptr, u64, u64 } } buffer local { { ptr, u64, u64 } } buffer_ local { { ptr, u64, u64 } } buffer_0 @@ -288,6 +291,7 @@ script { local [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] self_2 local { { ptr, u64, u64 } } self_3 +<<<<<<< HEAD entry(ops: __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], mut __ret_value: __ptr { u64 }): v512v1 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], ops_ mem_copy_val v512v1, ops @@ -674,6 +678,414 @@ script { } pub fn abi_encode_51(mut self !375: u64, mut buffer: __ptr { { ptr, u64, u64 } }, mut __ret_value: __ptr { { ptr, u64, u64 } }) -> (), !378 { +======= + entry(ops: __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], __ret_value: __ptr { u64 }): + v506v1 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], ops_ + mem_copy_val v506v1, ops + v932v1 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], ops_, !172 + v3847v1 = get_local __ptr { { ptr, u64, u64 } }, __struct_init_00, !176 + v875v1 = const u64 1024 + v3848v1 = asm(cap: v875v1) -> ptr hp, !177 { + aloc cap + } + v3849v1 = get_local __ptr { ptr, u64, u64 }, __anon_000, !178 + v879v1 = const u64 0 + v3850v1 = get_elem_ptr v3849v1, __ptr ptr, v879v1, !179 + store v3848v1 to v3850v1, !180 + v882v1 = const u64 1 + v3852v1 = get_elem_ptr v3849v1, __ptr u64, v882v1, !181 + store v875v1 to v3852v1, !182 + v885v1 = const u64 2 + v3854v1 = get_elem_ptr v3849v1, __ptr u64, v885v1, !183 + v877v1 = const u64 0 + store v877v1 to v3854v1, !184 + v4530v1 = asm(buffer: v3849v1) -> __ptr { ptr, u64, u64 } buffer { + } + v4575v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_0 + mem_copy_val v4575v1, v4530v1 + v1201v1 = const u64 0 + v3857v1 = get_elem_ptr v3847v1, __ptr { ptr, u64, u64 }, v1201v1, !185 + mem_copy_val v3857v1, v4575v1 + v3861v1 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], self_2, !188 + mem_copy_val v3861v1, v932v1 + v3863v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_, !189 + mem_copy_val v3863v1, v3847v1 + v3865v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_, !191 + v3867v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__, !193 + mem_copy_val v3867v1, v3865v1 + v598v1 = const u64 0, !194 + br encode_allow_alias_33_abi_encode_46_while(v598v1), !195 + + encode_allow_alias_33_abi_encode_46_while(v3779v1: u64): + v604v1 = const u64 2 + v3876v1 = cmp lt v3779v1 v604v1, !198 + cbr v3876v1, encode_allow_alias_33_abi_encode_46_while_body(), encode_allow_alias_33_abi_encode_46_end_while(), !199 + + encode_allow_alias_33_abi_encode_46_while_body(): + v3908v1 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], self_2, !201 + v3910v1 = get_elem_ptr v3908v1, __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, v3779v1, !203 + v3912v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__, !205 + v3914v1 = get_local __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, self_10, !208 + mem_copy_val v3914v1, v3910v1 + v3916v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_0, !209 + mem_copy_val v3916v1, v3912v1 + v3918v1 = get_local __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, self_10, !211 + v689v1 = const u64 0 + v3919v1 = get_elem_ptr v3918v1, __ptr { string<3> }, v689v1, !213 + v3921v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_0, !215 + v3923v1 = get_local __ptr { string<3> }, self_000, !218 + mem_copy_val v3923v1, v3919v1 + v3925v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_00, !219 + mem_copy_val v3925v1, v3921v1 + v3927v1 = get_local __ptr { string<3> }, self_000, !221 + v677v1 = const u64 0 + v3928v1 = get_elem_ptr v3927v1, __ptr string<3>, v677v1, !223 + v3930v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_00, !225 + v3932v1 = get_local __ptr string<3>, self_0000, !228 + mem_copy_val v3932v1, v3928v1 + v3934v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_000, !229 + mem_copy_val v3934v1, v3930v1 + v3936v1 = get_local __ptr { { ptr, u64, u64 } }, __struct_init_000, !231 + v3937v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_000, !233 + v626v1 = const u64 0 + v3938v1 = get_elem_ptr v3937v1, __ptr { ptr, u64, u64 }, v626v1, !235 + v4532v1 = asm(buffer: v3938v1) -> __ptr { ptr, u64, u64 } buffer { + } + v4587v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_00 + mem_copy_val v4587v1, v4532v1 + v3941v1 = get_local __ptr { ptr, u64, u64 }, __anon_01, !236 + mem_copy_val v3941v1, v4587v1 + v632v1 = const u64 0 + v3943v1 = get_elem_ptr v3941v1, __ptr ptr, v632v1, !237 + v3944v1 = load v3943v1, !238 + v635v1 = const u64 1 + v3945v1 = get_elem_ptr v3941v1, __ptr u64, v635v1, !239 + v3946v1 = load v3945v1, !240 + v638v1 = const u64 2 + v3947v1 = get_elem_ptr v3941v1, __ptr u64, v638v1, !241 + v3948v1 = load v3947v1, !242 + v3949v1 = get_local __ptr string<3>, self_0000, !244 + v643v1 = const u64 3 + v3951v1 = add v3948v1, v643v1, !245 + v3952v1 = cmp gt v3951v1 v3946v1, !246 + cbr v3952v1, encode_allow_alias_33_abi_encode_46_abi_encode_47_abi_encode_48_abi_encode_49_block1(), encode_allow_alias_33_abi_encode_46_abi_encode_47_abi_encode_48_abi_encode_49_block0(v3944v1, v3946v1), !247 + + encode_allow_alias_33_abi_encode_46_abi_encode_47_abi_encode_48_abi_encode_49_block0(v3781v1: ptr, v3782v1: u64): + v3959v1 = get_local __ptr string<3>, __anon_10, !248 + mem_copy_val v3959v1, v3949v1 + v3961v1 = add v3781v1, v3948v1, !249 + v3962v1 = cast_ptr v3961v1 to __ptr u8, !250 + mem_copy_bytes v3962v1, v3959v1, 3, !251 + v3965v1 = get_local __ptr { ptr, u64, u64 }, __anon_20, !252 + v663v1 = const u64 0 + v3966v1 = get_elem_ptr v3965v1, __ptr ptr, v663v1, !253 + store v3781v1 to v3966v1, !254 + v666v1 = const u64 1 + v3968v1 = get_elem_ptr v3965v1, __ptr u64, v666v1, !255 + store v3782v1 to v3968v1, !256 + v669v1 = const u64 2 + v3970v1 = get_elem_ptr v3965v1, __ptr u64, v669v1, !257 + store v3951v1 to v3970v1, !258 + v4534v1 = asm(buffer: v3965v1) -> __ptr { ptr, u64, u64 } buffer { + } + v4591v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_01 + mem_copy_val v4591v1, v4534v1 + v1195v1 = const u64 0 + v3973v1 = get_elem_ptr v3936v1, __ptr { ptr, u64, u64 }, v1195v1, !259 + mem_copy_val v3973v1, v4591v1 + v3977v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__00, !261 + mem_copy_val v3977v1, v3936v1 + v3979v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__00, !263 + v3982v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__0, !265 + mem_copy_val v3982v1, v3979v1 + v3984v1 = get_local __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, self_10, !267 + v834v1 = const u64 1 + v3985v1 = get_elem_ptr v3984v1, __ptr { u64, ( u64 | u64 ) }, v834v1, !269 + v3987v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__0, !271 + v3989v1 = get_local __ptr { u64, ( u64 | u64 ) }, self_100, !274 + mem_copy_val v3989v1, v3985v1 + v3991v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_1, !275 + mem_copy_val v3991v1, v3987v1 + v3993v1 = get_local __ptr { u64, ( u64 | u64 ) }, self_100, !277 + v3995v1 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_10, !279 + mem_copy_val v3995v1, v3993v1 + v3997v1 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_10, !280 + v708v1 = const u64 0 + v3998v1 = get_elem_ptr v3997v1, __ptr u64, v708v1, !281 + v3999v1 = load v3998v1, !282 + v711v1 = const u64 0, !276 + v4004v1 = cmp eq v3999v1 v711v1, !285 + cbr v4004v1, encode_allow_alias_33_abi_encode_46_abi_encode_47_abi_encode_50_block0(), encode_allow_alias_33_abi_encode_46_abi_encode_47_abi_encode_50_block1(), !286 + + encode_allow_alias_33_abi_encode_46_abi_encode_47_abi_encode_48_abi_encode_49_block1(): + v649v1 = const u64 2 + v3955v1 = mul v3946v1, v649v1, !287 + v3956v1 = add v3955v1, v643v1, !288 + v3957v1 = asm(new_cap: v3956v1, old_ptr: v3944v1, len: v3948v1) -> __ptr u8 hp, !289 { + aloc new_cap + mcp hp old_ptr len + } + br encode_allow_alias_33_abi_encode_46_abi_encode_47_abi_encode_48_abi_encode_49_block0(v3957v1, v3956v1), !290 + + encode_allow_alias_33_abi_encode_46_abi_encode_47_abi_encode_50_block0(): + v4037v1 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_10, !291 + v714v1 = const u64 1 + v715v1 = const u64 0 + v4038v1 = get_elem_ptr v4037v1, __ptr u64, v714v1, v715v1, !292 + v4039v1 = load v4038v1, !293 + v4041v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_1, !295 + v4471v1 = get_local __ptr { { ptr, u64, u64 } }, __tmp_arg + mem_copy_val v4471v1, v4041v1 + v4509v1 = get_local __ptr { { ptr, u64, u64 } }, __ret_val + v776v1 = const u64 0, !296 + v4510v1 = call abi_encode_51(v776v1, v4471v1, v4509v1) + v4044v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__1, !298 + mem_copy_val v4044v1, v4509v1 + v4047v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__1, !300 + v4474v1 = get_local __ptr { { ptr, u64, u64 } }, __tmp_arg0 + mem_copy_val v4474v1, v4047v1 + v4512v1 = get_local __ptr { { ptr, u64, u64 } }, __ret_val0 + v4513v1 = call abi_encode_51(v4039v1, v4474v1, v4512v1) + v4050v1 = get_local __ptr { { ptr, u64, u64 } }, buffer___0, !302 + mem_copy_val v4050v1, v4512v1 + v4052v1 = get_local __ptr { { ptr, u64, u64 } }, buffer___0, !304 + v4461v1 = get_local __ptr { { ptr, u64, u64 } }, __tmp_block_arg + mem_copy_val v4461v1, v4052v1 + br encode_allow_alias_33_abi_encode_46_abi_encode_47_abi_encode_50_block5(v4461v1), !305 + + encode_allow_alias_33_abi_encode_46_abi_encode_47_abi_encode_50_block1(): + v4007v1 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_10, !306 + v792v1 = const u64 0 + v4008v1 = get_elem_ptr v4007v1, __ptr u64, v792v1, !307 + v4009v1 = load v4008v1, !308 + v795v1 = const u64 1, !276 + v4014v1 = cmp eq v4009v1 v795v1, !311 + cbr v4014v1, encode_allow_alias_33_abi_encode_46_abi_encode_47_abi_encode_50_block2(), encode_allow_alias_33_abi_encode_46_abi_encode_47_abi_encode_50_block3(), !312 + + encode_allow_alias_33_abi_encode_46_abi_encode_47_abi_encode_50_block2(): + v4018v1 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_10, !313 + v798v1 = const u64 1 + v799v1 = const u64 1 + v4019v1 = get_elem_ptr v4018v1, __ptr u64, v798v1, v799v1, !314 + v4020v1 = load v4019v1, !315 + v4022v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_1, !317 + v4477v1 = get_local __ptr { { ptr, u64, u64 } }, __tmp_arg1 + mem_copy_val v4477v1, v4022v1 + v4515v1 = get_local __ptr { { ptr, u64, u64 } }, __ret_val1 + v804v1 = const u64 1, !318 + v4516v1 = call abi_encode_51(v804v1, v4477v1, v4515v1) + v4025v1 = get_local __ptr { { ptr, u64, u64 } }, buffer____, !320 + mem_copy_val v4025v1, v4515v1 + v4028v1 = get_local __ptr { { ptr, u64, u64 } }, buffer____, !322 + v4480v1 = get_local __ptr { { ptr, u64, u64 } }, __tmp_arg2 + mem_copy_val v4480v1, v4028v1 + v4518v1 = get_local __ptr { { ptr, u64, u64 } }, __ret_val2 + v4519v1 = call abi_encode_51(v4020v1, v4480v1, v4518v1) + v4031v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_____, !324 + mem_copy_val v4031v1, v4518v1 + v4033v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_____, !326 + v4459v1 = get_local __ptr { { ptr, u64, u64 } }, __tmp_block_arg + mem_copy_val v4459v1, v4033v1 + br encode_allow_alias_33_abi_encode_46_abi_encode_47_abi_encode_50_block5(v4459v1), !327 + + encode_allow_alias_33_abi_encode_46_abi_encode_47_abi_encode_50_block3(): + v819v1 = const u64 14757395258967588866, !278 + revert v819v1, !328 + + encode_allow_alias_33_abi_encode_46_abi_encode_47_abi_encode_50_block5(v4457v1: __ptr { { ptr, u64, u64 } }): + v4055v1 = get_local __ptr { { ptr, u64, u64 } }, buffer______, !330 + mem_copy_val v4055v1, v4457v1 + v4057v1 = get_local __ptr { { ptr, u64, u64 } }, buffer______, !332 + v4060v1 = get_local __ptr { { ptr, u64, u64 } }, buffer___, !334 + mem_copy_val v4060v1, v4057v1 + v4062v1 = get_local __ptr { { ptr, u64, u64 } }, buffer___, !336 + v4065v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__, !338 + mem_copy_val v4065v1, v4062v1 + v858v1 = const u64 1, !339 + v4072v1 = add v3779v1, v858v1, !342 + br encode_allow_alias_33_abi_encode_46_while(v4072v1), !343 + + encode_allow_alias_33_abi_encode_46_end_while(): + v3879v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__, !345 + v3882v1 = get_local __ptr { { ptr, u64, u64 } }, buffer, !347 + mem_copy_val v3882v1, v3879v1 + v3884v1 = get_local __ptr { { ptr, u64, u64 } }, buffer, !349 + v3886v1 = get_local __ptr { { ptr, u64, u64 } }, self_3, !352 + mem_copy_val v3886v1, v3884v1 + v3888v1 = get_local __ptr { { ptr, u64, u64 } }, self_3, !354 + v900v1 = const u64 0 + v3889v1 = get_elem_ptr v3888v1, __ptr { ptr, u64, u64 }, v900v1, !355 + v4536v1 = asm(buffer: v3889v1) -> __ptr { ptr, u64, u64 } buffer { + } + v4614v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_02 + mem_copy_val v4614v1, v4536v1 + v3892v1 = get_local __ptr { ptr, u64, u64 }, __anon_02, !356 + mem_copy_val v3892v1, v4614v1 + v906v1 = const u64 0 + v3894v1 = get_elem_ptr v3892v1, __ptr ptr, v906v1, !357 + v912v1 = const u64 2 + v3898v1 = get_elem_ptr v3892v1, __ptr u64, v912v1, !358 + v3900v1 = get_local __ptr { ptr, u64 }, __anon_100, !359 + v916v1 = const u64 0 + v3901v1 = get_elem_ptr v3900v1, __ptr ptr, v916v1, !360 + mem_copy_val v3901v1, v3894v1 + v919v1 = const u64 1 + v3903v1 = get_elem_ptr v3900v1, __ptr u64, v919v1, !361 + mem_copy_val v3903v1, v3898v1 + v4538v1 = asm(s: v3900v1) -> __ptr slice s { + } + v4619v1 = get_local __ptr slice, __aggr_memcpy_03 + mem_copy_val v4619v1, v4538v1 + v4467v1 = get_local __ptr slice, __tmp_block_arg0 + mem_copy_val v4467v1, v4619v1 + v4527v1 = get_local __ptr slice, __log_arg + mem_copy_val v4527v1, v4467v1 + v934v1 = const u64 3647243719605075626 + log __ptr slice v4527v1, v934v1 + v1015v1 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], ops_, !362 + v1016v1 = const u64 0, !363 + v1017v1 = get_elem_ptr v1015v1, __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, v1016v1, !364 + v1018v1 = const u64 0 + v1019v1 = get_elem_ptr v1017v1, __ptr { string<3> }, v1018v1, !365 + v1020v1 = const u64 0 + v1021v1 = get_elem_ptr v1019v1, __ptr string<3>, v1020v1, !222 + v1024v1 = get_global __ptr string<3>, __const_global + v1025v1 = cast_ptr v1024v1 to ptr, !366 + v1027v1 = get_local __ptr { ptr, u64 }, __anon_0, !366 + v1028v1 = const u64 0 + v1029v1 = get_elem_ptr v1027v1, __ptr ptr, v1028v1 + store v1025v1 to v1029v1, !366 + v1031v1 = const u64 1 + v1032v1 = get_elem_ptr v1027v1, __ptr u64, v1031v1 + v1026v1 = const u64 3 + store v1026v1 to v1032v1, !366 + v1034v1 = get_local __ptr slice, __anon_1, !366 + mem_copy_bytes v1034v1, v1027v1, 16 + v4487v1 = get_local __ptr string<3>, __tmp_arg3 + mem_copy_val v4487v1, v1021v1 + v4489v1 = get_local __ptr slice, __tmp_arg4 + mem_copy_val v4489v1, v1034v1 + v4491v1 = call eq_str_3_57(v4487v1, v4489v1) + v945v1 = const bool false, !368 + v1038v3 = cmp eq v4491v1 v945v1, !374 + cbr v1038v3, assert_54_block0(), assert_54_block1(), !375 + + assert_54_block0(): + v1206v1 = const u64 18446744073709486084 + revert v1206v1, !380 + + assert_54_block1(): + v1039v1 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], ops_, !381 + v1040v1 = const u64 0, !382 + v1041v1 = get_elem_ptr v1039v1, __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, v1040v1, !383 + v1042v1 = const u64 1 + v1043v1 = get_elem_ptr v1041v1, __ptr { u64, ( u64 | u64 ) }, v1042v1, !384 + v1045v1 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_1, !385 + mem_copy_val v1045v1, v1043v1 + v1047v1 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_1, !386 + v1048v1 = const u64 0 + v1049v1 = get_elem_ptr v1047v1, __ptr u64, v1048v1, !386 + v1050v1 = load v1049v1 + v1051v1 = const u64 0, !386 + v4095v1 = cmp eq v1050v1 v1051v1, !389 + cbr v4095v1, block0(), block1(), !387 + + block0(): + v1053v1 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_1, !386 + v1054v1 = const u64 1 + v1055v1 = const u64 0 + v1056v1 = get_elem_ptr v1053v1, __ptr u64, v1054v1, v1055v1 + v1057v1 = load v1056v1 + v1068v1 = const u64 1338, !390 + v4104v1 = cmp eq v1057v1 v1068v1, !393 + v1070v3 = cmp eq v4104v1 v945v1, !396 + cbr v1070v3, assert_54_block015(), assert_54_block116(), !397 + + assert_54_block015(): + revert v1206v1, !398 + + assert_54_block116(): + v1071v1 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], ops_, !399 + v1072v1 = const u64 1, !400 + v1073v1 = get_elem_ptr v1071v1, __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, v1072v1, !401 + v1074v1 = const u64 0 + v1075v1 = get_elem_ptr v1073v1, __ptr { string<3> }, v1074v1, !402 + v1076v1 = const u64 0 + v1077v1 = get_elem_ptr v1075v1, __ptr string<3>, v1076v1, !222 + v1080v1 = get_global __ptr string<3>, __const_global0 + v1081v1 = cast_ptr v1080v1 to ptr, !403 + v1083v1 = get_local __ptr { ptr, u64 }, __anon_2, !403 + v1084v1 = const u64 0 + v1085v1 = get_elem_ptr v1083v1, __ptr ptr, v1084v1 + store v1081v1 to v1085v1, !403 + v1087v1 = const u64 1 + v1088v1 = get_elem_ptr v1083v1, __ptr u64, v1087v1 + v1082v1 = const u64 3 + store v1082v1 to v1088v1, !403 + v1090v1 = get_local __ptr slice, __anon_3, !403 + mem_copy_bytes v1090v1, v1083v1, 16 + v4492v1 = get_local __ptr string<3>, __tmp_arg5 + mem_copy_val v4492v1, v1077v1 + v4494v1 = get_local __ptr slice, __tmp_arg6 + mem_copy_val v4494v1, v1090v1 + v4496v1 = call eq_str_3_57(v4492v1, v4494v1) + v1094v3 = cmp eq v4496v1 v945v1, !406 + cbr v1094v3, assert_54_block018(), assert_54_block119(), !407 + + assert_54_block018(): + revert v1206v1, !408 + + assert_54_block119(): + v1095v1 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], ops_, !409 + v1096v1 = const u64 1, !410 + v1097v1 = get_elem_ptr v1095v1, __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, v1096v1, !411 + v1098v1 = const u64 1 + v1099v1 = get_elem_ptr v1097v1, __ptr { u64, ( u64 | u64 ) }, v1098v1, !412 + v1101v1 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_2, !413 + mem_copy_val v1101v1, v1099v1 + v1103v1 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_2, !414 + v1104v1 = const u64 0 + v1105v1 = get_elem_ptr v1103v1, __ptr u64, v1104v1, !414 + v1106v1 = load v1105v1 + v1107v1 = const u64 1, !414 + v4110v1 = cmp eq v1106v1 v1107v1, !417 + cbr v4110v1, block3(), block4(), !415 + + block1(): + v1062v1 = const u64 1, !418 + revert v1062v1, !421 + + block3(): + v1109v1 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_2, !414 + v1110v1 = const u64 1 + v1111v1 = const u64 1 + v1112v1 = get_elem_ptr v1109v1, __ptr u64, v1110v1, v1111v1 + v1113v1 = load v1112v1 + v1124v1 = const u64 1, !422 + v4119v1 = cmp eq v1113v1 v1124v1, !425 + v1126v3 = cmp eq v4119v1 v945v1, !428 + cbr v1126v3, assert_54_block021(), assert_54_block122(), !429 + + assert_54_block021(): + revert v1206v1, !430 + + assert_54_block122(): + v1127v1 = get_local __ptr { u64 }, __struct_init_0, !431 + v1186v1 = const u64 0 + v1187v1 = get_elem_ptr v1127v1, __ptr u64, v1186v1, !431 + v1128v1 = const u64 1, !432 + store v1128v1 to v1187v1, !431 + mem_copy_val __ret_value, v1127v1 + v4500v1 = const unit () + ret () v4500v1 + + block4(): + v1118v1 = const u64 2, !433 + revert v1118v1, !436 + } + + pub fn abi_encode_51(self !437: u64, buffer: __ptr { { ptr, u64, u64 } }, __ret_value: __ptr { { ptr, u64, u64 } }) -> (), !440 { +>>>>>>> a94b693b4 (update tests) local mut { ptr, u64, u64 } __aggr_memcpy_0 local mut { ptr, u64, u64 } __aggr_memcpy_00 local { ptr, u64, u64 } __anon_0 @@ -681,14 +1093,31 @@ script { local { { ptr, u64, u64 } } __struct_init_0 local { { ptr, u64, u64 } } buffer_ +<<<<<<< HEAD entry(mut self: u64, buffer: __ptr { { ptr, u64, u64 } }, mut __ret_value: __ptr { { ptr, u64, u64 } }): v730v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_ mem_copy_val v730v1, buffer v732v1 = get_local __ptr { { ptr, u64, u64 } }, __struct_init_0, !379 +======= + entry(self: u64, buffer: __ptr { { ptr, u64, u64 } }, __ret_value: __ptr { { ptr, u64, u64 } }): + v724v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_ + mem_copy_val v724v1, buffer + v726v1 = get_local __ptr { { ptr, u64, u64 } }, __struct_init_0, !441 + v727v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_, !442 + v728v1 = const u64 0 + v729v1 = get_elem_ptr v727v1, __ptr { ptr, u64, u64 }, v728v1, !234 + v4540v1 = asm(buffer: v729v1) -> __ptr { ptr, u64, u64 } buffer { + } + v4631v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_0 + mem_copy_val v4631v1, v4540v1 + v732v1 = get_local __ptr { ptr, u64, u64 }, __anon_0 + mem_copy_val v732v1, v4631v1 +>>>>>>> a94b693b4 (update tests) v734v1 = const u64 0 v735v1 = get_elem_ptr v730v1, __ptr { ptr, u64, u64 }, v734v1, !208 v4611v1 = asm(buffer: v735v1) -> __ptr { ptr, u64, u64 } buffer { } +<<<<<<< HEAD v4698v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_0 mem_copy_val v4698v1, v4611v1 v738v1 = get_local __ptr { ptr, u64, u64 }, __anon_0 @@ -731,6 +1160,16 @@ script { mem_copy_val __ret_value, v732v1 v4582v1 = const unit () ret () v4582v1 +======= + v4634v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_00 + mem_copy_val v4634v1, v4542v1 + v1198v1 = const u64 0 + v1199v1 = get_elem_ptr v726v1, __ptr { ptr, u64, u64 }, v1198v1, !441 + mem_copy_val v1199v1, v4634v1 + mem_copy_val __ret_value, v726v1 + v4507v1 = const unit () + ret () v4507v1 +>>>>>>> a94b693b4 (update tests) block1(): v757v1 = const u64 2 @@ -740,7 +1179,49 @@ script { aloc new_cap mcp hp old_ptr len } +<<<<<<< HEAD br block0(v760v1, v759v1) +======= + br block0(v754v1, v753v1) + } + + fn eq_str_3_57(a: __ptr string<3>, b: __ptr slice) -> bool, !445 { + local { ptr, u64 } __tuple_1_ + local string<3> a_ + local slice self_ + + entry(a: __ptr string<3>, b: __ptr slice): + v972v1 = get_local __ptr string<3>, a_ + mem_copy_val v972v1, a + v1005v3 = get_local __ptr slice, self_, !448 + mem_copy_val v1005v3, b + v3730v1 = get_local __ptr slice, self_, !451 + v4544v1 = asm(s: v3730v1) -> __ptr { ptr, u64 } s { + } + v4644v1 = const u64 0 + v4645v1 = get_elem_ptr v4544v1, __ptr ptr, v4644v1 + v4646v1 = load v4645v1 + v4647v1 = const u64 1 + v4648v1 = get_elem_ptr v4544v1, __ptr u64, v4647v1 + v4649v1 = load v4648v1 + v3737v1 = get_local __ptr { ptr, u64 }, __tuple_1_, !453 + v4666v1 = const u64 0 + v4667v1 = get_elem_ptr v3737v1, __ptr ptr, v4666v1 + store v4646v1 to v4667v1 + v4669v1 = const u64 1 + v4670v1 = get_elem_ptr v3737v1, __ptr u64, v4669v1 + store v4649v1 to v4670v1 + v3739v1 = get_local __ptr { ptr, u64 }, __tuple_1_, !454 + v989v1 = const u64 0 + v3740v1 = get_elem_ptr v3739v1, __ptr ptr, v989v1, !455 + v3741v1 = load v3740v1, !448 + v1008v1 = get_local __ptr string<3>, a_, !456 + v1012v1 = const u64 3, !457 + v1013v1 = asm(a: v1008v1, b: v3741v1, len: v1012v1, r) -> bool r, !458 { + meq r a b len, !459 + } + ret bool v1013v1 +>>>>>>> a94b693b4 (update tests) } } @@ -765,6 +1246,7 @@ script { !18 = (!6 !7 !13 !14 !15) !19 = span !4 106366 106404 !20 = (!6 !7 !13 !14 !19) +<<<<<<< HEAD !21 = span !4 106413 106434 !22 = fn_call_path_span !4 106413 106426 !23 = span !4 62441 62466 @@ -1124,6 +1606,447 @@ script { !377 = fn_name_span !4 5292 5302 !378 = (!376 !377) !379 = span !4 5345 5428 +======= +!21 = span !4 106026 106032 +!22 = (!6 !7 !13 !14 !21) +!23 = span !4 106012 106033 +!24 = fn_call_path_span !4 106012 106025 +!25 = span !4 62040 62065 +!26 = (!6 !7 !13 !14 !23 !24 !25) +!27 = span !4 62041 62062 +!28 = fn_call_path_span !4 62041 62054 +!29 = span !4 61262 61275 +!30 = (!6 !7 !13 !14 !23 !24 !27 !28 !29) +!31 = (!6 !7 !13 !14 !23 !24 !27 !28 !29) +!32 = span !4 61246 61276 +!33 = (!6 !7 !13 !14 !23 !24 !27 !28 !32) +!34 = span !4 61361 61366 +!35 = (!6 !7 !13 !14 !23 !24 !27 !28 !34) +!36 = (!6 !7 !13 !14 !23 !24 !27 !28) +!37 = span !4 61390 61391 +!38 = (!6 !7 !13 !14 !23 !24 !27 !28) +!39 = span !4 61408 61413 +!40 = fn_call_path_span !4 61410 61411 +!41 = (!6 !7 !13 !14 !23 !24 !27 !28 !39 !40) +!42 = (!6 !7 !13 !14 !23 !24 !27 !28) +!43 = (!6 !7 !13 !14 !23 !24 !27 !28) +!44 = span !4 61488 61508 +!45 = fn_call_path_span !4 61495 61501 +!46 = span !4 3659 3678 +!47 = fn_call_path_span !4 3659 3672 +!48 = span !4 62438 62484 +!49 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !48) +!50 = span !4 62439 62460 +!51 = fn_call_path_span !4 62439 62452 +!52 = span !0 372 412 +!53 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !50 !51 !52) +!54 = span !0 384 409 +!55 = fn_call_path_span !0 391 397 +!56 = span !4 60573 60593 +!57 = fn_call_path_span !4 60580 60590 +!58 = span !4 2890 2907 +!59 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !50 !51 !54 !55 !46 !47 !56 !57 !58) +!60 = span !4 818 834 +!61 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !50 !51 !54 !55 !46 !47 !56 !57 !60) +!62 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !50 !51 !54 !55 !46 !47 !56 !57 !58) +!63 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !50 !51 !54 !55 !46 !47 !56 !57 !58) +!64 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !50 !51 !54 !55 !46 !47 !56 !57 !58) +!65 = span !4 2869 2948 +!66 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !50 !51 !54 !55 !46 !47 !56 !57 !65) +!67 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !50 !51 !54 !55 !46 !47 !56 !57) +!68 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !50 !51 !54 !55 !46 !47 !56 !57) +!69 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !50 !51 !54 !55 !46 !47 !56 !57) +!70 = span !4 2957 3000 +!71 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !50 !51 !54 !55 !46 !47 !56 !57 !70) +!72 = span !4 3010 3015 +!73 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !50 !51 !54 !55 !46 !47 !56 !57 !72) +!74 = span !4 60562 60594 +!75 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !50 !51 !54 !55 !46 !47 !74) +!76 = span !4 60610 60614 +!77 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !50 !51 !54 !55 !46 !47 !76) +!78 = span !4 60610 60620 +!79 = fn_call_path_span !4 60615 60618 +!80 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !50 !51 !54 !55 !46 !47 !78 !79) +!81 = "sway-lib-std/src/raw_slice.sw" +!82 = span !81 3732 3736 +!83 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !50 !51 !54 !55 !46 !47 !78 !79 !82) +!84 = span !81 3721 3737 +!85 = fn_call_path_span !81 3721 3731 +!86 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !50 !51 !54 !55 !46 !47 !78 !79 !84 !85) +!87 = span !81 1685 1690 +!88 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !50 !51 !54 !55 !46 !47 !78 !79 !84 !85 !87) +!89 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !50 !51 !54 !55 !46 !47 !78 !79) +!90 = span !81 3738 3739 +!91 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !50 !51 !54 !55 !46 !47 !78 !79 !90) +!92 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !50 !51 !54 !55 !46 !47 !78 !79) +!93 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !50 !51 !52) +!94 = span !4 62462 62483 +!95 = fn_call_path_span !4 62462 62475 +!96 = span !0 309 331 +!97 = fn_call_path_span !0 316 322 +!98 = span !4 58454 58482 +!99 = fn_call_path_span !4 58461 58473 +!100 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95 !96 !97 !46 !47 !98 !99) +!101 = span !4 2466 2547 +!102 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95 !96 !97 !46 !47 !98 !99 !101) +!103 = span !4 2504 2517 +!104 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95 !96 !97 !46 !47 !98 !99) +!105 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95 !96 !97 !46 !47 !98 !99) +!106 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95 !96 !97 !46 !47 !98 !99) +!107 = span !4 2557 2596 +!108 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95 !96 !97 !46 !47 !98 !99 !107) +!109 = span !0 349 350 +!110 = span !0 349 398 +!111 = fn_call_path_span !0 349 398 +!112 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95 !110 !111) +!113 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95 !110) +!114 = "test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_various_types/src/main.sw" +!115 = span !114 204 260 +!116 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95 !115) +!117 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95 !115) +!118 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95 !115) +!119 = span !0 374 396 +!120 = fn_call_path_span !0 381 387 +!121 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95 !119 !120 !46 !47 !98 !99) +!122 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95 !119 !120 !46 !47 !98 !99 !101) +!123 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95 !119 !120 !46 !47 !98 !99) +!124 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95 !119 !120 !46 !47 !98 !99) +!125 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95 !119 !120 !46 !47 !98 !99) +!126 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95 !119 !120 !46 !47 !98 !99 !107) +!127 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95 !115) +!128 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95 !115) +!129 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95) +!130 = span !0 400 401 +!131 = span !0 400 449 +!132 = fn_call_path_span !0 400 449 +!133 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95 !131 !132) +!134 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95 !131) +!135 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95 !115) +!136 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95 !115) +!137 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95 !115) +!138 = span !0 425 447 +!139 = fn_call_path_span !0 432 438 +!140 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95 !138 !139 !46 !47 !98 !99) +!141 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95 !138 !139 !46 !47 !98 !99 !101) +!142 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95 !138 !139 !46 !47 !98 !99) +!143 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95 !138 !139 !46 !47 !98 !99) +!144 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95 !138 !139 !46 !47 !98 !99) +!145 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95 !138 !139 !46 !47 !98 !99 !107) +!146 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95 !115) +!147 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95 !115) +!148 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95) +!149 = span !0 466 467 +!150 = span !0 457 468 +!151 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95 !150) +!152 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !48) +!153 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !48) +!154 = span !4 61527 61528 +!155 = span !4 61522 61528 +!156 = fn_call_path_span !4 61524 61526 +!157 = (!6 !7 !13 !14 !23 !24 !27 !28 !155 !156) +!158 = (!6 !7 !13 !14 !23 !24 !27 !28) +!159 = (!6 !7 !13 !14 !23 !24 !25) +!160 = span !0 40 132 +!161 = span !0 178 182 +!162 = span !0 183 184 +!163 = span !0 149 186 +!164 = span !0 234 241 +!165 = span !0 203 242 +!166 = fn_call_path_span !0 203 220 +!167 = span !4 56517 56543 +!168 = (!165 !166 !167) +!169 = span !114 297 695 +!170 = fn_name_span !114 300 304 +!171 = (!169 !170) +!172 = span !114 360 363 +!173 = span !4 56273 56286 +!174 = fn_call_path_span !4 56273 56284 +!175 = span !4 231 294 +!176 = (!172 !173 !174 !175) +!177 = (!172 !173 !174) +!178 = (!172 !173 !174) +!179 = (!172 !173 !174) +!180 = (!172 !173 !174) +!181 = (!172 !173 !174) +!182 = (!172 !173 !174) +!183 = (!172 !173 !174) +!184 = (!172 !173 !174) +!185 = (!172 !173 !174 !175) +!186 = span !4 56254 56287 +!187 = fn_call_path_span !4 56262 56272 +!188 = (!172 !186 !187) +!189 = (!172 !186 !187) +!190 = span !4 7240 7246 +!191 = (!172 !186 !187 !190) +!192 = span !4 7223 7247 +!193 = (!172 !186 !187 !192) +!194 = span !4 7268 7269 +!195 = (!172 !186 !187) +!196 = span !4 7286 7291 +!197 = fn_call_path_span !4 7288 7289 +!198 = (!172 !186 !187 !196 !197) +!199 = (!172 !186 !187) +!200 = span !4 7315 7319 +!201 = (!172 !186 !187 !200) +!202 = span !4 7315 7322 +!203 = (!172 !186 !187 !202) +!204 = span !4 7334 7340 +!205 = (!172 !186 !187 !204) +!206 = span !4 7315 7341 +!207 = fn_call_path_span !4 7323 7333 +!208 = (!172 !186 !187 !206 !207) +!209 = (!172 !186 !187 !206 !207) +!210 = span !4 8319 8323 +!211 = (!172 !186 !187 !206 !207 !210) +!212 = span !4 8324 8325 +!213 = (!172 !186 !187 !206 !207 !212) +!214 = span !4 8337 8343 +!215 = (!172 !186 !187 !206 !207 !214) +!216 = span !4 8319 8344 +!217 = fn_call_path_span !4 8326 8336 +!218 = (!172 !186 !187 !206 !207 !216 !217) +!219 = (!172 !186 !187 !206 !207 !216 !217) +!220 = span !0 379 383 +!221 = (!172 !186 !187 !206 !207 !216 !217 !220) +!222 = span !114 282 293 +!223 = (!172 !186 !187 !206 !207 !216 !217 !222) +!224 = span !0 399 405 +!225 = (!172 !186 !187 !206 !207 !216 !217 !224) +!226 = span !0 379 406 +!227 = fn_call_path_span !0 388 398 +!228 = (!172 !186 !187 !206 !207 !216 !217 !226 !227) +!229 = (!172 !186 !187 !206 !207 !216 !217 !226 !227) +!230 = span !4 6355 6438 +!231 = (!172 !186 !187 !206 !207 !216 !217 !226 !227 !230) +!232 = span !4 6407 6413 +!233 = (!172 !186 !187 !206 !207 !216 !217 !226 !227 !232) +!234 = span !4 127 154 +!235 = (!172 !186 !187 !206 !207 !216 !217 !226 !227 !234) +!236 = (!172 !186 !187 !206 !207 !216 !217 !226 !227) +!237 = (!172 !186 !187 !206 !207 !216 !217 !226 !227) +!238 = (!172 !186 !187 !206 !207 !216 !217 !226 !227) +!239 = (!172 !186 !187 !206 !207 !216 !217 !226 !227) +!240 = (!172 !186 !187 !206 !207 !216 !217 !226 !227) +!241 = (!172 !186 !187 !206 !207 !216 !217 !226 !227) +!242 = (!172 !186 !187 !206 !207 !216 !217 !226 !227) +!243 = span !4 6422 6426 +!244 = (!172 !186 !187 !206 !207 !216 !217 !226 !227 !243) +!245 = (!172 !186 !187 !206 !207 !216 !217 !226 !227) +!246 = (!172 !186 !187 !206 !207 !216 !217 !226 !227) +!247 = (!172 !186 !187 !206 !207 !216 !217 !226 !227) +!248 = (!172 !186 !187 !206 !207 !216 !217 !226 !227) +!249 = (!172 !186 !187 !206 !207 !216 !217 !226 !227) +!250 = (!172 !186 !187 !206 !207 !216 !217 !226 !227) +!251 = (!172 !186 !187 !206 !207 !216 !217 !226 !227) +!252 = (!172 !186 !187 !206 !207 !216 !217 !226 !227) +!253 = (!172 !186 !187 !206 !207 !216 !217 !226 !227) +!254 = (!172 !186 !187 !206 !207 !216 !217 !226 !227) +!255 = (!172 !186 !187 !206 !207 !216 !217 !226 !227) +!256 = (!172 !186 !187 !206 !207 !216 !217 !226 !227) +!257 = (!172 !186 !187 !206 !207 !216 !217 !226 !227) +!258 = (!172 !186 !187 !206 !207 !216 !217 !226 !227) +!259 = (!172 !186 !187 !206 !207 !216 !217 !226 !227 !230) +!260 = span !0 366 407 +!261 = (!172 !186 !187 !206 !207 !216 !217 !260) +!262 = span !0 425 431 +!263 = (!172 !186 !187 !206 !207 !216 !217 !262) +!264 = span !4 8306 8345 +!265 = (!172 !186 !187 !206 !207 !264) +!266 = span !4 8367 8371 +!267 = (!172 !186 !187 !206 !207 !266) +!268 = span !4 8372 8373 +!269 = (!172 !186 !187 !206 !207 !268) +!270 = span !4 8385 8391 +!271 = (!172 !186 !187 !206 !207 !270) +!272 = span !4 8367 8392 +!273 = fn_call_path_span !4 8374 8384 +!274 = (!172 !186 !187 !206 !207 !272 !273) +!275 = (!172 !186 !187 !206 !207 !272 !273) +!276 = span !0 415 419 +!277 = (!172 !186 !187 !206 !207 !272 !273 !276) +!278 = span !0 409 848 +!279 = (!172 !186 !187 !206 !207 !272 !273 !278) +!280 = (!172 !186 !187 !206 !207 !272 !273 !276) +!281 = (!172 !186 !187 !206 !207 !272 !273 !276) +!282 = (!172 !186 !187 !206 !207 !272 !273) +!283 = span !0 422 632 +!284 = fn_call_path_span !0 422 632 +!285 = (!172 !186 !187 !206 !207 !272 !273 !283 !284) +!286 = (!172 !186 !187 !206 !207 !272 !273 !283) +!287 = (!172 !186 !187 !206 !207 !216 !217 !226 !227) +!288 = (!172 !186 !187 !206 !207 !216 !217 !226 !227) +!289 = (!172 !186 !187 !206 !207 !216 !217 !226 !227) +!290 = (!172 !186 !187 !206 !207 !216 !217 !226 !227) +!291 = (!172 !186 !187 !206 !207 !272 !273 !276) +!292 = (!172 !186 !187 !206 !207 !272 !273) +!293 = (!172 !186 !187 !206 !207 !272 !273) +!294 = span !0 507 513 +!295 = (!172 !186 !187 !206 !207 !272 !273 !294) +!296 = span !0 491 495 +!297 = span !0 478 515 +!298 = (!172 !186 !187 !206 !207 !272 !273 !297) +!299 = span !0 570 576 +!300 = (!172 !186 !187 !206 !207 !272 !273 !299) +!301 = span !0 540 578 +!302 = (!172 !186 !187 !206 !207 !272 !273 !301) +!303 = span !0 603 609 +!304 = (!172 !186 !187 !206 !207 !272 !273 !303) +!305 = (!172 !186 !187 !206 !207 !272 !273) +!306 = (!172 !186 !187 !206 !207 !272 !273 !276) +!307 = (!172 !186 !187 !206 !207 !272 !273 !276) +!308 = (!172 !186 !187 !206 !207 !272 !273) +!309 = span !0 634 844 +!310 = fn_call_path_span !0 634 844 +!311 = (!172 !186 !187 !206 !207 !272 !273 !309 !310) +!312 = (!172 !186 !187 !206 !207 !272 !273 !309) +!313 = (!172 !186 !187 !206 !207 !272 !273 !276) +!314 = (!172 !186 !187 !206 !207 !272 !273) +!315 = (!172 !186 !187 !206 !207 !272 !273) +!316 = span !0 719 725 +!317 = (!172 !186 !187 !206 !207 !272 !273 !316) +!318 = span !0 703 707 +!319 = span !0 690 727 +!320 = (!172 !186 !187 !206 !207 !272 !273 !319) +!321 = span !0 782 788 +!322 = (!172 !186 !187 !206 !207 !272 !273 !321) +!323 = span !0 752 790 +!324 = (!172 !186 !187 !206 !207 !272 !273 !323) +!325 = span !0 815 821 +!326 = (!172 !186 !187 !206 !207 !272 !273 !325) +!327 = (!172 !186 !187 !206 !207 !272 !273) +!328 = (!172 !186 !187 !206 !207 !272 !273 !278) +!329 = span !0 396 849 +!330 = (!172 !186 !187 !206 !207 !272 !273 !329) +!331 = span !0 866 872 +!332 = (!172 !186 !187 !206 !207 !272 !273 !331) +!333 = span !4 8354 8393 +!334 = (!172 !186 !187 !206 !207 !333) +!335 = span !4 8402 8408 +!336 = (!172 !186 !187 !206 !207 !335) +!337 = span !4 7306 7341 +!338 = (!172 !186 !187 !337) +!339 = span !4 7360 7361 +!340 = span !4 7355 7361 +!341 = fn_call_path_span !4 7357 7359 +!342 = (!172 !186 !187 !340 !341) +!343 = (!172 !186 !187) +!344 = span !4 7383 7389 +!345 = (!172 !186 !187 !344) +!346 = span !4 56241 56288 +!347 = (!172 !346) +!348 = span !4 56297 56303 +!349 = (!172 !348) +!350 = span !4 56297 56318 +!351 = fn_call_path_span !4 56304 56316 +!352 = (!172 !350 !351) +!353 = span !4 766 770 +!354 = (!172 !350 !351 !353) +!355 = (!172 !350 !351 !234) +!356 = (!172 !350 !351) +!357 = (!172 !350 !351) +!358 = (!172 !350 !351) +!359 = (!172 !350 !351) +!360 = (!172 !350 !351) +!361 = (!172 !350 !351) +!362 = span !114 386 389 +!363 = span !114 390 391 +!364 = span !114 386 392 +!365 = span !114 393 394 +!366 = span !114 400 405 +!367 = "sway-lib-std/src/ops.sw" +!368 = span !367 12573 12578 +!369 = span !114 370 407 +!370 = fn_call_path_span !114 370 376 +!371 = "sway-lib-std/src/assert.sw" +!372 = span !371 1015 1025 +!373 = fn_call_path_span !371 1015 1016 +!374 = (!369 !370 !372 !373) +!375 = (!369 !370 !372) +!376 = span !371 1036 1064 +!377 = fn_call_path_span !371 1036 1042 +!378 = "sway-lib-std/src/revert.sw" +!379 = span !378 757 771 +!380 = (!369 !370 !376 !377 !379) +!381 = span !114 426 429 +!382 = span !114 430 431 +!383 = span !114 426 432 +!384 = span !114 433 434 +!385 = span !114 420 503 +!386 = span !114 426 434 +!387 = span !114 445 473 +!388 = fn_call_path_span !114 445 473 +!389 = (!387 !388) +!390 = span !114 507 511 +!391 = span !114 420 511 +!392 = fn_call_path_span !114 504 506 +!393 = (!391 !392) +!394 = span !114 413 512 +!395 = fn_call_path_span !114 413 419 +!396 = (!394 !395 !372 !373) +!397 = (!394 !395 !372) +!398 = (!394 !395 !376 !377 !379) +!399 = span !114 535 538 +!400 = span !114 539 540 +!401 = span !114 535 541 +!402 = span !114 542 543 +!403 = span !114 549 554 +!404 = span !114 519 556 +!405 = fn_call_path_span !114 519 525 +!406 = (!404 !405 !372 !373) +!407 = (!404 !405 !372) +!408 = (!404 !405 !376 !377 !379) +!409 = span !114 575 578 +!410 = span !114 579 580 +!411 = span !114 575 581 +!412 = span !114 582 583 +!413 = span !114 569 652 +!414 = span !114 575 583 +!415 = span !114 594 622 +!416 = fn_call_path_span !114 594 622 +!417 = (!415 !416) +!418 = span !114 494 495 +!419 = span !114 487 496 +!420 = fn_call_path_span !114 487 493 +!421 = (!419 !420 !379) +!422 = span !114 656 657 +!423 = span !114 569 657 +!424 = fn_call_path_span !114 653 655 +!425 = (!423 !424) +!426 = span !114 562 658 +!427 = fn_call_path_span !114 562 568 +!428 = (!426 !427 !372 !373) +!429 = (!426 !427 !372) +!430 = (!426 !427 !376 !377 !379) +!431 = span !114 665 693 +!432 = span !114 686 687 +!433 = span !114 643 644 +!434 = span !114 636 645 +!435 = fn_call_path_span !114 636 642 +!436 = (!434 !435 !379) +!437 = span !4 4896 4900 +!438 = span !4 4882 5027 +!439 = fn_name_span !4 4885 4895 +!440 = (!438 !439) +!441 = span !4 4938 5021 +!442 = span !4 4990 4996 +!443 = span !114 50 202 +!444 = fn_name_span !114 53 61 +!445 = (!443 !444) +!446 = span !114 107 117 +!447 = fn_call_path_span !114 109 115 +!448 = (!446 !447) +!449 = "sway-lib-std/src/str.sw" +!450 = span !449 153 157 +!451 = (!446 !447 !450) +!452 = span !449 131 201 +!453 = (!446 !447 !452) +!454 = (!446 !447 !452) +!455 = (!446 !447 !452) +!456 = span !114 130 131 +!457 = span !114 148 149 +!458 = span !114 123 200 +!459 = span !114 164 177 +>>>>>>> a94b693b4 (update tests) ;; ASM: Final program ;; Program kind: Script @@ -1227,6 +2150,7 @@ addi $r2 $$locbase i232 ; get offset to local __ptr { u64, ( u64 | u64 ) } mcpi $r2 $r1 i16 ; copy memory mcpi $r9 $r0 i8 ; copy memory addi $r0 $r9 i8 ; get offset to aggregate element +<<<<<<< HEAD mcpi $r0 $r2 i16 ; copy memory addi $r0 $$locbase i8 ; get offset to local __ptr { { string<3> }, { u64, ( u64 | u64 ) } } mcpi $r0 $r9 i24 ; copy memory @@ -1480,6 +2404,278 @@ cfsi i1312 ; [fn end: main_32] free: locals 1312 byte(s), cal move $$reta $r4 ; [fn end: main_32] restore return address poph i532479 ; [fn end: main_32]: restore used high registers 40..64 popl i8388608 ; [fn end: main_32]: restore used low registers 16..40 +======= +mcpi $r0 $r1 i16 ; copy memory +addi $r0 $$locbase i40 ; get offset to local __ptr { { string<3> }, { u64, ( u64 | u64 ) } } +mcpi $r0 $r9 i24 ; copy memory +mcpi $r7 $r0 i24 ; copy memory +addi $r2 $r2 i1 +jmpb $zero i87 +pshh i532472 ; [fn init: main_32]: push used high registers 40..64 +move $$locbase $sp ; [fn init: main_32]: set locals base register +cfei i1232 ; [fn init: main_32]: allocate: locals 1232 byte(s), call args 0 slot(s) +move $r4 $$arg1 ; [fn init: main_32]: copy argument 1 (__ret_value) +move $r3 $$reta ; [fn init: main_32]: save return address +addi $r0 $$locbase i1056 ; get offset to local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] +mcpi $r0 $$arg0 i48 ; copy memory +addi $r0 $$locbase i1056 ; get offset to local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] +addi $r1 $$locbase i464 ; get offset to local __ptr { { ptr, u64, u64 } } +movi $r2 i1024 ; initialize constant into register +aloc $r2 +addi $r2 $$locbase i128 ; get offset to local __ptr { ptr, u64, u64 } +sw $$locbase $hp i16 ; store word +movi $r5 i1024 ; initialize constant into register +sw $$locbase $r5 i17 ; store word +sw $$locbase $zero i18 ; store word +mcpi $$locbase $r2 i24 ; copy memory +mcpi $r1 $$locbase i24 ; copy memory +addi $r2 $$locbase i1160 ; get offset to local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] +mcpi $r2 $r0 i48 ; copy memory +addi $r0 $$locbase i720 ; get offset to local __ptr { { ptr, u64, u64 } } +mcpi $r0 $r1 i24 ; copy memory +addi $r0 $$locbase i720 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r1 $$locbase i840 ; get offset to local __ptr { { ptr, u64, u64 } } +mcpi $r1 $r0 i24 ; copy memory +movi $r9 i0 ; move parameter from branch to block argument +movi $r0 i2 ; initialize constant into register +lt $r0 $r9 $r0 +jnzf $r0 $zero i102 +addi $r0 $$locbase i840 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r1 $$locbase i696 ; get offset to local __ptr { { ptr, u64, u64 } } +mcpi $r1 $r0 i24 ; copy memory +addi $r0 $$locbase i696 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r1 $$locbase i1208 ; get offset to local __ptr { { ptr, u64, u64 } } +mcpi $r1 $r0 i24 ; copy memory +addi $r0 $$locbase i1208 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r1 $$locbase i72 ; get offset to local __ptr { ptr, u64, u64 } +mcpi $r1 $r0 i24 ; copy memory +addi $r0 $$locbase i176 ; get offset to local __ptr { ptr, u64, u64 } +mcpi $r0 $r1 i24 ; copy memory +addi $r1 $r0 i16 ; get offset to aggregate element +addi $r2 $$locbase i224 ; get offset to local __ptr { ptr, u64 } +mcpi $r2 $r0 i8 ; copy memory +addi $r0 $r2 i8 ; get offset to aggregate element +mcpi $r0 $r1 i8 ; copy memory +addi $r0 $$locbase i96 ; get offset to local __ptr slice +mcpi $r0 $r2 i16 ; copy memory +addi $r1 $$locbase i680 ; get offset to local __ptr slice +mcpi $r1 $r0 i16 ; copy memory +addi $r0 $$locbase i296 ; get offset to local __ptr slice +mcpi $r0 $r1 i16 ; copy memory +load $r0 data_NonConfigurable_0; load constant from data section +lw $r1 $$locbase i37 ; load slice pointer for logging data +lw $r2 $$locbase i38 ; load slice size for logging data +logd $zero $r0 $r1 $r2 ; log slice +addi $r0 $$locbase i1056 ; get offset to local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] +addr $r1 data_NonConfigurable_1; get __const_global's address in data section +addi $r2 $$locbase i112 ; get offset to local __ptr { ptr, u64 } +sw $$locbase $r1 i14 ; store word +movi $r1 i3 ; initialize constant into register +sw $$locbase $r1 i15 ; store word +addi $r1 $$locbase i200 ; get offset to local __ptr slice +mcpi $r1 $r2 i16 ; copy memory +addi $r2 $$locbase i608 ; get offset to local __ptr string<3> +mcpi $r2 $r0 i8 ; copy memory +addi $r0 $$locbase i616 ; get offset to local __ptr slice +mcpi $r0 $r1 i16 ; copy memory +move $$arg0 $r2 ; [call: eq_str_3_57]: pass argument 0 +move $$arg1 $r0 ; [call: eq_str_3_57]: pass argument 1 +jal $$reta $pc i232 ; [call: eq_str_3_57]: call function +eq $r0 $$retv $zero +jnzf $r0 $zero i56 +addi $r0 $$locbase i1056 ; get offset to local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] +addi $r0 $r0 i8 ; get offset to aggregate element +addi $r1 $$locbase i312 ; get offset to local __ptr { u64, ( u64 | u64 ) } +mcpi $r1 $r0 i16 ; copy memory +lw $r0 $$locbase i39 ; load word +eq $r0 $r0 $zero +jnzf $r0 $zero i1 +rvrt $one +lw $r0 $$locbase i40 ; load word +movi $r1 i1338 ; initialize constant into register +eq $r0 $r0 $r1 +eq $r0 $r0 $zero +jnzf $r0 $zero i41 +addi $r0 $$locbase i1056 ; get offset to local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] +addi $r0 $r0 i24 ; add array element offset to array base +addr $r1 data_NonConfigurable_2; get __const_global0's address in data section +addi $r2 $$locbase i240 ; get offset to local __ptr { ptr, u64 } +sw $$locbase $r1 i30 ; store word +movi $r1 i3 ; initialize constant into register +sw $$locbase $r1 i31 ; store word +addi $r1 $$locbase i280 ; get offset to local __ptr slice +mcpi $r1 $r2 i16 ; copy memory +addi $r2 $$locbase i632 ; get offset to local __ptr string<3> +mcpi $r2 $r0 i8 ; copy memory +addi $r0 $$locbase i640 ; get offset to local __ptr slice +mcpi $r0 $r1 i16 ; copy memory +move $$arg0 $r2 ; [call: eq_str_3_57]: pass argument 0 +move $$arg1 $r0 ; [call: eq_str_3_57]: pass argument 1 +jal $$reta $pc i200 ; [call: eq_str_3_57]: call function +eq $r0 $$retv $zero +jnzf $r0 $zero i20 +addi $r0 $$locbase i1056 ; get offset to local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] +addi $r0 $r0 i24 ; add array element offset to array base +addi $r0 $r0 i8 ; get offset to aggregate element +addi $r1 $$locbase i344 ; get offset to local __ptr { u64, ( u64 | u64 ) } +mcpi $r1 $r0 i16 ; copy memory +lw $r0 $$locbase i43 ; load word +eq $r0 $r0 $one +jnzf $r0 $zero i2 +movi $r0 i2 ; initialize constant into register +rvrt $r0 +lw $r0 $$locbase i44 ; load word +eq $r0 $r0 $one +eq $r0 $r0 $zero +jnzf $r0 $zero i4 +addi $r0 $$locbase i456 ; get offset to local __ptr { u64 } +sw $$locbase $one i57 ; store word +mcpi $r4 $r0 i8 ; copy memory +jmpf $zero i140 +load $r0 data_NonConfigurable_3; load constant from data section +rvrt $r0 +load $r0 data_NonConfigurable_3; load constant from data section +rvrt $r0 +load $r0 data_NonConfigurable_3; load constant from data section +rvrt $r0 +load $r0 data_NonConfigurable_3; load constant from data section +rvrt $r0 +addi $r0 $$locbase i1160 ; get offset to local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] +muli $r1 $r9 i24 ; get offset to array element +add $r1 $r0 $r1 ; add array element offset to array base +addi $r0 $$locbase i840 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r2 $$locbase i1120 ; get offset to local __ptr { { string<3> }, { u64, ( u64 | u64 ) } } +mcpi $r2 $r1 i24 ; copy memory +addi $r1 $$locbase i744 ; get offset to local __ptr { { ptr, u64, u64 } } +mcpi $r1 $r0 i24 ; copy memory +addi $r0 $$locbase i1120 ; get offset to local __ptr { { string<3> }, { u64, ( u64 | u64 ) } } +addi $r1 $$locbase i744 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r2 $$locbase i1104 ; get offset to local __ptr { string<3> } +mcpi $r2 $r0 i8 ; copy memory +addi $r0 $$locbase i768 ; get offset to local __ptr { { ptr, u64, u64 } } +mcpi $r0 $r1 i24 ; copy memory +addi $r0 $$locbase i1104 ; get offset to local __ptr { string<3> } +addi $r1 $$locbase i768 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r2 $$locbase i1112 ; get offset to local __ptr string<3> +mcpi $r2 $r0 i8 ; copy memory +addi $r0 $$locbase i792 ; get offset to local __ptr { { ptr, u64, u64 } } +mcpi $r0 $r1 i24 ; copy memory +addi $r0 $$locbase i488 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r1 $$locbase i792 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r2 $$locbase i24 ; get offset to local __ptr { ptr, u64, u64 } +mcpi $r2 $r1 i24 ; copy memory +addi $r1 $$locbase i152 ; get offset to local __ptr { ptr, u64, u64 } +mcpi $r1 $r2 i24 ; copy memory +lw $r1 $$locbase i19 ; load word +lw $r8 $$locbase i20 ; load word +lw $r2 $$locbase i21 ; load word +addi $r5 $$locbase i1112 ; get offset to local __ptr string<3> +addi $r6 $r2 i3 +gt $r7 $r6 $r8 +jnzf $r7 $zero i1 +jmpf $zero i5 +muli $r7 $r8 i2 +addi $r8 $r7 i3 +aloc $r8 +mcp $hp $r1 $r2 +move $r1 $hp ; move parameter from branch to block argument +addi $r7 $$locbase i216 ; get offset to local __ptr string<3> +mcpi $r7 $r5 i8 ; copy memory +add $r2 $r1 $r2 +mcpi $r2 $r7 i3 ; copy memory +addi $r2 $$locbase i256 ; get offset to local __ptr { ptr, u64, u64 } +sw $$locbase $r1 i32 ; store word +sw $$locbase $r8 i33 ; store word +sw $$locbase $r6 i34 ; store word +addi $r1 $$locbase i48 ; get offset to local __ptr { ptr, u64, u64 } +mcpi $r1 $r2 i24 ; copy memory +mcpi $r0 $r1 i24 ; copy memory +addi $r1 $$locbase i888 ; get offset to local __ptr { { ptr, u64, u64 } } +mcpi $r1 $r0 i24 ; copy memory +addi $r0 $$locbase i888 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r1 $$locbase i864 ; get offset to local __ptr { { ptr, u64, u64 } } +mcpi $r1 $r0 i24 ; copy memory +addi $r0 $$locbase i1120 ; get offset to local __ptr { { string<3> }, { u64, ( u64 | u64 ) } } +addi $r0 $r0 i8 ; get offset to aggregate element +addi $r1 $$locbase i864 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r2 $$locbase i1144 ; get offset to local __ptr { u64, ( u64 | u64 ) } +mcpi $r2 $r0 i16 ; copy memory +addi $r0 $$locbase i816 ; get offset to local __ptr { { ptr, u64, u64 } } +mcpi $r0 $r1 i24 ; copy memory +addi $r0 $$locbase i1144 ; get offset to local __ptr { u64, ( u64 | u64 ) } +addi $r1 $$locbase i328 ; get offset to local __ptr { u64, ( u64 | u64 ) } +mcpi $r1 $r0 i16 ; copy memory +lw $r0 $$locbase i41 ; load word +eq $r0 $r0 $zero +jnzf $r0 $zero i30 +lw $r0 $$locbase i41 ; load word +eq $r0 $r0 $one +jnzf $r0 $zero i2 +load $r0 data_NonConfigurable_4; load constant from data section +rvrt $r0 +lw $r0 $$locbase i42 ; load word +addi $r1 $$locbase i816 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r2 $$locbase i560 ; get offset to local __ptr { { ptr, u64, u64 } } +mcpi $r2 $r1 i24 ; copy memory +addi $r1 $$locbase i408 ; get offset to local __ptr { { ptr, u64, u64 } } +movi $$arg0 i1 ; [call: abi_encode_51]: pass argument 0 +move $$arg1 $r2 ; [call: abi_encode_51]: pass argument 1 +move $$arg2 $r1 ; [call: abi_encode_51]: pass argument 2 +jal $$reta $pc i55 ; [call: abi_encode_51]: call function +addi $r2 $$locbase i984 ; get offset to local __ptr { { ptr, u64, u64 } } +mcpi $r2 $r1 i24 ; copy memory +addi $r1 $$locbase i984 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r2 $$locbase i584 ; get offset to local __ptr { { ptr, u64, u64 } } +mcpi $r2 $r1 i24 ; copy memory +addi $r1 $$locbase i432 ; get offset to local __ptr { { ptr, u64, u64 } } +move $$arg0 $r0 ; [call: abi_encode_51]: pass argument 0 +move $$arg1 $r2 ; [call: abi_encode_51]: pass argument 1 +move $$arg2 $r1 ; [call: abi_encode_51]: pass argument 2 +jal $$reta $pc i45 ; [call: abi_encode_51]: call function +addi $r0 $$locbase i1008 ; get offset to local __ptr { { ptr, u64, u64 } } +mcpi $r0 $r1 i24 ; copy memory +addi $r0 $$locbase i1008 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r1 $$locbase i656 ; get offset to local __ptr { { ptr, u64, u64 } } +mcpi $r1 $r0 i24 ; copy memory +jmpf $zero i24 +lw $r0 $$locbase i42 ; load word +addi $r1 $$locbase i816 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r2 $$locbase i512 ; get offset to local __ptr { { ptr, u64, u64 } } +mcpi $r2 $r1 i24 ; copy memory +addi $r1 $$locbase i360 ; get offset to local __ptr { { ptr, u64, u64 } } +movi $$arg0 i0 ; [call: abi_encode_51]: pass argument 0 +move $$arg1 $r2 ; [call: abi_encode_51]: pass argument 1 +move $$arg2 $r1 ; [call: abi_encode_51]: pass argument 2 +jal $$reta $pc i30 ; [call: abi_encode_51]: call function +addi $r2 $$locbase i912 ; get offset to local __ptr { { ptr, u64, u64 } } +mcpi $r2 $r1 i24 ; copy memory +addi $r1 $$locbase i912 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r2 $$locbase i536 ; get offset to local __ptr { { ptr, u64, u64 } } +mcpi $r2 $r1 i24 ; copy memory +addi $r1 $$locbase i384 ; get offset to local __ptr { { ptr, u64, u64 } } +move $$arg0 $r0 ; [call: abi_encode_51]: pass argument 0 +move $$arg1 $r2 ; [call: abi_encode_51]: pass argument 1 +move $$arg2 $r1 ; [call: abi_encode_51]: pass argument 2 +jal $$reta $pc i20 ; [call: abi_encode_51]: call function +addi $r0 $$locbase i960 ; get offset to local __ptr { { ptr, u64, u64 } } +mcpi $r0 $r1 i24 ; copy memory +addi $r0 $$locbase i960 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r1 $$locbase i656 ; get offset to local __ptr { { ptr, u64, u64 } } +mcpi $r1 $r0 i24 ; copy memory +addi $r0 $$locbase i1032 ; get offset to local __ptr { { ptr, u64, u64 } } +mcpi $r0 $r1 i24 ; copy memory +addi $r0 $$locbase i1032 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r1 $$locbase i936 ; get offset to local __ptr { { ptr, u64, u64 } } +mcpi $r1 $r0 i24 ; copy memory +addi $r0 $$locbase i936 ; get offset to local __ptr { { ptr, u64, u64 } } +addi $r1 $$locbase i840 ; get offset to local __ptr { { ptr, u64, u64 } } +mcpi $r1 $r0 i24 ; copy memory +addi $r9 $r9 i1 +jmpb $zero i235 +cfsi i1232 ; [fn end: main_32] free: locals 1232 byte(s), call args 0 slot(s) +move $$reta $r3 ; [fn end: main_32] restore return address +poph i532472 ; [fn end: main_32]: restore used high registers 40..64 +>>>>>>> a94b693b4 (update tests) jal $zero $$reta i0 ; [fn end: main_32] return from call pshh i532352 ; [fn init: abi_encode_51]: push used high registers 40..64 move $$locbase $sp ; [fn init: abi_encode_51]: set locals base register @@ -1536,6 +2732,7 @@ data_NonConfigurable_4 .word 14757395258967588866 0x00000028 GTF R52 $zero 0xa ;; [97, 208, 0, 10] 0x0000002c ADDI R51 R59 0xa8 ;; [80, 207, 176, 168] 0x00000030 SW R59 R52 0x15 ;; [95, 239, 64, 21] +<<<<<<< HEAD 0x00000034 ADDI R47 R59 0x1b8 ;; [80, 191, 177, 184] 0x00000038 MCPI R47 R51 0x8 ;; [96, 191, 48, 8] 0x0000003c ADDI R46 R59 0xf8 ;; [80, 187, 176, 248] @@ -1917,6 +3114,435 @@ data_NonConfigurable_4 .word 14757395258967588866 0x00000620 .bytes as hex ([61, 64, 64]), len i3, as ascii "add" 0x00000628 .word i18446744073709486084, as hex be bytes ([FF, FF, FF, FF, FF, FF, 00, 04]) 0x00000630 .word i14757395258967588866, as hex be bytes ([CC, CC, CC, CC, CC, CC, 00, 02]) +======= +0x00000034 ADDI R52 R59 0x1b8 ;; [80, 211, 177, 184] +0x00000038 MCPI R52 R51 0x8 ;; [96, 211, 48, 8] +0x0000003c ADDI R47 R59 0x1b8 ;; [80, 191, 177, 184] +0x00000040 ADDI R48 R59 0xf8 ;; [80, 195, 176, 248] +0x00000044 ADDI R52 R59 0x70 ;; [80, 211, 176, 112] +0x00000048 MCLI R52 0x30 ;; [112, 208, 0, 48] +0x0000004c ADDI R51 R59 0x188 ;; [80, 207, 177, 136] +0x00000050 MCPI R51 R52 0x30 ;; [96, 207, 64, 48] +0x00000054 ADDI R49 R59 0x188 ;; [80, 199, 177, 136] +0x00000058 MOVI R50 0x0 ;; [114, 200, 0, 0] +0x0000005c MOVI R52 0x2 ;; [114, 208, 0, 2] +0x00000060 LT R52 R50 R52 ;; [22, 211, 45, 0] +0x00000064 JNZF R52 $zero 0xf ;; [118, 208, 0, 15] +0x00000068 MCPI R48 R49 0x30 ;; [96, 195, 16, 48] +0x0000006c ADDI R52 R59 0x158 ;; [80, 211, 177, 88] +0x00000070 MCPI R52 R48 0x30 ;; [96, 211, 0, 48] +0x00000074 ADDI R52 R59 0x158 ;; [80, 211, 177, 88] +0x00000078 ADDI R51 R59 0xb8 ;; [80, 207, 176, 184] +0x0000007c MCPI R51 R52 0x30 ;; [96, 207, 64, 48] +0x00000080 ADDI R52 R59 0xa0 ;; [80, 211, 176, 160] +0x00000084 MOVE R58 R51 ;; [26, 235, 48, 0] +0x00000088 MOVE R57 R52 ;; [26, 231, 64, 0] +0x0000008c JAL R62 $pc 0x4d ;; [153, 248, 48, 77] +0x00000090 ADDI R51 R59 0x150 ;; [80, 207, 177, 80] +0x00000094 MCPI R51 R52 0x8 ;; [96, 207, 64, 8] +0x00000098 ADDI R52 R59 0x150 ;; [80, 211, 177, 80] +0x0000009c MOVI R51 0x8 ;; [114, 204, 0, 8] +0x000000a0 RETD R52 R51 ;; [37, 211, 48, 0] +0x000000a4 MULI R52 R50 0x18 ;; [85, 211, 32, 24] +0x000000a8 ADD R45 R49 R52 ;; [16, 183, 29, 0] +0x000000ac ADDI R43 R59 0x128 ;; [80, 175, 177, 40] +0x000000b0 ADDI R44 R59 0xb0 ;; [80, 179, 176, 176] +0x000000b4 ADDI R52 R59 0x140 ;; [80, 211, 177, 64] +0x000000b8 MCPI R52 R47 0x8 ;; [96, 210, 240, 8] +0x000000bc MOVI R51 0x3 ;; [114, 204, 0, 3] +0x000000c0 SW R59 R51 0x29 ;; [95, 239, 48, 41] +0x000000c4 MCPI R59 R52 0x10 ;; [96, 239, 64, 16] +0x000000c8 ADDI R52 R59 0x1e0 ;; [80, 211, 177, 224] +0x000000cc MCPI R52 R59 0x10 ;; [96, 211, 176, 16] +0x000000d0 LW R52 R47 0x0 ;; [93, 210, 240, 0] +0x000000d4 ADDI R52 R52 0x3 ;; [80, 211, 64, 3] +0x000000d8 SW R47 R52 0x0 ;; [95, 191, 64, 0] +0x000000dc ADDI R52 R59 0x1e0 ;; [80, 211, 177, 224] +0x000000e0 ADDI R51 R59 0x1c0 ;; [80, 207, 177, 192] +0x000000e4 MCPI R51 R52 0x10 ;; [96, 207, 64, 16] +0x000000e8 ADDI R52 R59 0x1c0 ;; [80, 211, 177, 192] +0x000000ec ADDI R51 R59 0x1d0 ;; [80, 207, 177, 208] +0x000000f0 MCPI R51 R52 0x10 ;; [96, 207, 64, 16] +0x000000f4 ADDI R52 R59 0x1d0 ;; [80, 211, 177, 208] +0x000000f8 ADDI R51 R59 0x1f0 ;; [80, 207, 177, 240] +0x000000fc MCPI R51 R52 0x10 ;; [96, 207, 64, 16] +0x00000100 ADDI R52 R59 0x1f0 ;; [80, 211, 177, 240] +0x00000104 ADDI R51 R59 0x10 ;; [80, 207, 176, 16] +0x00000108 MCPI R51 R52 0x10 ;; [96, 207, 64, 16] +0x0000010c ADDI R52 R59 0x40 ;; [80, 211, 176, 64] +0x00000110 MCPI R52 R51 0x10 ;; [96, 211, 48, 16] +0x00000114 LW R52 R59 0x8 ;; [93, 211, 176, 8] +0x00000118 ADDI R51 R59 0x20 ;; [80, 207, 176, 32] +0x0000011c MCPI R51 R52 0x8 ;; [96, 207, 64, 8] +0x00000120 MCPI R44 R51 0x8 ;; [96, 179, 48, 8] +0x00000124 LW R52 R47 0x0 ;; [93, 210, 240, 0] +0x00000128 LW R52 R52 0x0 ;; [93, 211, 64, 0] +0x0000012c LW R51 R47 0x0 ;; [93, 206, 240, 0] +0x00000130 ADDI R51 R51 0x8 ;; [80, 207, 48, 8] +0x00000134 SW R47 R51 0x0 ;; [95, 191, 48, 0] +0x00000138 EQ R51 R52 $zero ;; [19, 207, 64, 0] +0x0000013c JNZF R51 $zero 0xe ;; [118, 204, 0, 14] +0x00000140 EQ R52 R52 $one ;; [19, 211, 64, 64] +0x00000144 JNZF R52 $zero 0x1 ;; [118, 208, 0, 1] +0x00000148 RVRT $zero ;; [54, 0, 0, 0] +0x0000014c ADDI R52 R59 0x60 ;; [80, 211, 176, 96] +0x00000150 SW R59 $one 0xc ;; [95, 236, 16, 12] +0x00000154 LW R51 R47 0x0 ;; [93, 206, 240, 0] +0x00000158 LW R51 R51 0x0 ;; [93, 207, 48, 0] +0x0000015c LW R46 R47 0x0 ;; [93, 186, 240, 0] +0x00000160 ADDI R46 R46 0x8 ;; [80, 186, 224, 8] +0x00000164 SW R47 R46 0x0 ;; [95, 190, 224, 0] +0x00000168 SW R59 R51 0xd ;; [95, 239, 48, 13] +0x0000016c ADDI R51 R59 0xe8 ;; [80, 207, 176, 232] +0x00000170 MCPI R51 R52 0x10 ;; [96, 207, 64, 16] +0x00000174 JMPF $zero 0xa ;; [116, 0, 0, 10] +0x00000178 ADDI R52 R59 0x50 ;; [80, 211, 176, 80] +0x0000017c SW R59 $zero 0xa ;; [95, 236, 0, 10] +0x00000180 LW R51 R47 0x0 ;; [93, 206, 240, 0] +0x00000184 LW R51 R51 0x0 ;; [93, 207, 48, 0] +0x00000188 LW R46 R47 0x0 ;; [93, 186, 240, 0] +0x0000018c ADDI R46 R46 0x8 ;; [80, 186, 224, 8] +0x00000190 SW R47 R46 0x0 ;; [95, 190, 224, 0] +0x00000194 SW R59 R51 0xb ;; [95, 239, 48, 11] +0x00000198 ADDI R51 R59 0xe8 ;; [80, 207, 176, 232] +0x0000019c MCPI R51 R52 0x10 ;; [96, 207, 64, 16] +0x000001a0 MCPI R43 R44 0x8 ;; [96, 174, 192, 8] +0x000001a4 ADDI R52 R43 0x8 ;; [80, 210, 176, 8] +0x000001a8 MCPI R52 R51 0x10 ;; [96, 211, 48, 16] +0x000001ac ADDI R52 R59 0x28 ;; [80, 211, 176, 40] +0x000001b0 MCPI R52 R43 0x18 ;; [96, 210, 176, 24] +0x000001b4 MCPI R45 R52 0x18 ;; [96, 183, 64, 24] +0x000001b8 ADDI R50 R50 0x1 ;; [80, 203, 32, 1] +0x000001bc JMPB $zero 0x57 ;; [117, 0, 0, 87] +0x000001c0 PSHH 0x81ff8 ;; [150, 8, 31, 248] +0x000001c4 MOVE R59 $sp ;; [26, 236, 80, 0] +0x000001c8 CFEI 0x4d0 ;; [145, 0, 4, 208] +0x000001cc MOVE R48 R57 ;; [26, 195, 144, 0] +0x000001d0 MOVE R49 R62 ;; [26, 199, 224, 0] +0x000001d4 ADDI R52 R59 0x420 ;; [80, 211, 180, 32] +0x000001d8 MCPI R52 R58 0x30 ;; [96, 211, 160, 48] +0x000001dc ADDI R52 R59 0x420 ;; [80, 211, 180, 32] +0x000001e0 ADDI R51 R59 0x1d0 ;; [80, 207, 177, 208] +0x000001e4 MOVI R50 0x400 ;; [114, 200, 4, 0] +0x000001e8 ALOC R50 ;; [38, 200, 0, 0] +0x000001ec ADDI R50 R59 0x80 ;; [80, 203, 176, 128] +0x000001f0 SW R59 $hp 0x10 ;; [95, 236, 112, 16] +0x000001f4 MOVI R47 0x400 ;; [114, 188, 4, 0] +0x000001f8 SW R59 R47 0x11 ;; [95, 238, 240, 17] +0x000001fc SW R59 $zero 0x12 ;; [95, 236, 0, 18] +0x00000200 MCPI R59 R50 0x18 ;; [96, 239, 32, 24] +0x00000204 MCPI R51 R59 0x18 ;; [96, 207, 176, 24] +0x00000208 ADDI R50 R59 0x488 ;; [80, 203, 180, 136] +0x0000020c MCPI R50 R52 0x30 ;; [96, 203, 64, 48] +0x00000210 ADDI R52 R59 0x2d0 ;; [80, 211, 178, 208] +0x00000214 MCPI R52 R51 0x18 ;; [96, 211, 48, 24] +0x00000218 ADDI R52 R59 0x2d0 ;; [80, 211, 178, 208] +0x0000021c ADDI R51 R59 0x348 ;; [80, 207, 179, 72] +0x00000220 MCPI R51 R52 0x18 ;; [96, 207, 64, 24] +0x00000224 MOVI R43 0x0 ;; [114, 172, 0, 0] +0x00000228 MOVI R52 0x2 ;; [114, 208, 0, 2] +0x0000022c LT R52 R43 R52 ;; [22, 210, 189, 0] +0x00000230 JNZF R52 $zero 0x66 ;; [118, 208, 0, 102] +0x00000234 ADDI R52 R59 0x348 ;; [80, 211, 179, 72] +0x00000238 ADDI R51 R59 0x2b8 ;; [80, 207, 178, 184] +0x0000023c MCPI R51 R52 0x18 ;; [96, 207, 64, 24] +0x00000240 ADDI R52 R59 0x2b8 ;; [80, 211, 178, 184] +0x00000244 ADDI R51 R59 0x4b8 ;; [80, 207, 180, 184] +0x00000248 MCPI R51 R52 0x18 ;; [96, 207, 64, 24] +0x0000024c ADDI R52 R59 0x4b8 ;; [80, 211, 180, 184] +0x00000250 ADDI R51 R59 0x48 ;; [80, 207, 176, 72] +0x00000254 MCPI R51 R52 0x18 ;; [96, 207, 64, 24] +0x00000258 ADDI R52 R59 0xb0 ;; [80, 211, 176, 176] +0x0000025c MCPI R52 R51 0x18 ;; [96, 211, 48, 24] +0x00000260 ADDI R51 R52 0x10 ;; [80, 207, 64, 16] +0x00000264 ADDI R50 R59 0xe0 ;; [80, 203, 176, 224] +0x00000268 MCPI R50 R52 0x8 ;; [96, 203, 64, 8] +0x0000026c ADDI R52 R50 0x8 ;; [80, 211, 32, 8] +0x00000270 MCPI R52 R51 0x8 ;; [96, 211, 48, 8] +0x00000274 ADDI R52 R59 0x60 ;; [80, 211, 176, 96] +0x00000278 MCPI R52 R50 0x10 ;; [96, 211, 32, 16] +0x0000027c ADDI R51 R59 0x2a8 ;; [80, 207, 178, 168] +0x00000280 MCPI R51 R52 0x10 ;; [96, 207, 64, 16] +0x00000284 ADDI R52 R59 0x128 ;; [80, 211, 177, 40] +0x00000288 MCPI R52 R51 0x10 ;; [96, 211, 48, 16] +0x0000028c LW R52 R63 0x0 ;; [93, 211, 240, 0] +0x00000290 LW R51 R59 0x25 ;; [93, 207, 176, 37] +0x00000294 LW R50 R59 0x26 ;; [93, 203, 176, 38] +0x00000298 LOGD $zero R52 R51 R50 ;; [52, 3, 76, 242] +0x0000029c ADDI R52 R59 0x420 ;; [80, 211, 180, 32] +0x000002a0 MOVI R51 0x8 ;; [114, 204, 0, 8] +0x000002a4 ADD R51 R51 R63 ;; [16, 207, 63, 192] +0x000002a8 ADDI R50 R59 0x70 ;; [80, 203, 176, 112] +0x000002ac SW R59 R51 0xe ;; [95, 239, 48, 14] +0x000002b0 MOVI R51 0x3 ;; [114, 204, 0, 3] +0x000002b4 SW R59 R51 0xf ;; [95, 239, 48, 15] +0x000002b8 ADDI R51 R59 0xc8 ;; [80, 207, 176, 200] +0x000002bc MCPI R51 R50 0x10 ;; [96, 207, 32, 16] +0x000002c0 ADDI R50 R59 0x260 ;; [80, 203, 178, 96] +0x000002c4 MCPI R50 R52 0x8 ;; [96, 203, 64, 8] +0x000002c8 ADDI R52 R59 0x268 ;; [80, 211, 178, 104] +0x000002cc MCPI R52 R51 0x10 ;; [96, 211, 48, 16] +0x000002d0 MOVE R58 R50 ;; [26, 235, 32, 0] +0x000002d4 MOVE R57 R52 ;; [26, 231, 64, 0] +0x000002d8 JAL R62 $pc 0xe8 ;; [153, 248, 48, 232] +0x000002dc EQ R52 R61 $zero ;; [19, 211, 208, 0] +0x000002e0 JNZF R52 $zero 0x38 ;; [118, 208, 0, 56] +0x000002e4 ADDI R52 R59 0x420 ;; [80, 211, 180, 32] +0x000002e8 ADDI R52 R52 0x8 ;; [80, 211, 64, 8] +0x000002ec ADDI R51 R59 0x138 ;; [80, 207, 177, 56] +0x000002f0 MCPI R51 R52 0x10 ;; [96, 207, 64, 16] +0x000002f4 LW R52 R59 0x27 ;; [93, 211, 176, 39] +0x000002f8 EQ R52 R52 $zero ;; [19, 211, 64, 0] +0x000002fc JNZF R52 $zero 0x1 ;; [118, 208, 0, 1] +0x00000300 RVRT $one ;; [54, 4, 0, 0] +0x00000304 LW R52 R59 0x28 ;; [93, 211, 176, 40] +0x00000308 MOVI R51 0x53a ;; [114, 204, 5, 58] +0x0000030c EQ R52 R52 R51 ;; [19, 211, 76, 192] +0x00000310 EQ R52 R52 $zero ;; [19, 211, 64, 0] +0x00000314 JNZF R52 $zero 0x29 ;; [118, 208, 0, 41] +0x00000318 ADDI R52 R59 0x420 ;; [80, 211, 180, 32] +0x0000031c ADDI R52 R52 0x18 ;; [80, 211, 64, 24] +0x00000320 MOVI R51 0x10 ;; [114, 204, 0, 16] +0x00000324 ADD R51 R51 R63 ;; [16, 207, 63, 192] +0x00000328 ADDI R50 R59 0xf0 ;; [80, 203, 176, 240] +0x0000032c SW R59 R51 0x1e ;; [95, 239, 48, 30] +0x00000330 MOVI R51 0x3 ;; [114, 204, 0, 3] +0x00000334 SW R59 R51 0x1f ;; [95, 239, 48, 31] +0x00000338 ADDI R51 R59 0x118 ;; [80, 207, 177, 24] +0x0000033c MCPI R51 R50 0x10 ;; [96, 207, 32, 16] +0x00000340 ADDI R50 R59 0x278 ;; [80, 203, 178, 120] +0x00000344 MCPI R50 R52 0x8 ;; [96, 203, 64, 8] +0x00000348 ADDI R52 R59 0x280 ;; [80, 211, 178, 128] +0x0000034c MCPI R52 R51 0x10 ;; [96, 211, 48, 16] +0x00000350 MOVE R58 R50 ;; [26, 235, 32, 0] +0x00000354 MOVE R57 R52 ;; [26, 231, 64, 0] +0x00000358 JAL R62 $pc 0xc8 ;; [153, 248, 48, 200] +0x0000035c EQ R52 R61 $zero ;; [19, 211, 208, 0] +0x00000360 JNZF R52 $zero 0x14 ;; [118, 208, 0, 20] +0x00000364 ADDI R52 R59 0x420 ;; [80, 211, 180, 32] +0x00000368 ADDI R52 R52 0x18 ;; [80, 211, 64, 24] +0x0000036c ADDI R52 R52 0x8 ;; [80, 211, 64, 8] +0x00000370 ADDI R51 R59 0x158 ;; [80, 207, 177, 88] +0x00000374 MCPI R51 R52 0x10 ;; [96, 207, 64, 16] +0x00000378 LW R52 R59 0x2b ;; [93, 211, 176, 43] +0x0000037c EQ R52 R52 $one ;; [19, 211, 64, 64] +0x00000380 JNZF R52 $zero 0x2 ;; [118, 208, 0, 2] +0x00000384 MOVI R52 0x2 ;; [114, 208, 0, 2] +0x00000388 RVRT R52 ;; [54, 208, 0, 0] +0x0000038c LW R52 R59 0x2c ;; [93, 211, 176, 44] +0x00000390 EQ R52 R52 $one ;; [19, 211, 64, 64] +0x00000394 EQ R52 R52 $zero ;; [19, 211, 64, 0] +0x00000398 JNZF R52 $zero 0x4 ;; [118, 208, 0, 4] +0x0000039c ADDI R52 R59 0x1c8 ;; [80, 211, 177, 200] +0x000003a0 SW R59 $one 0x39 ;; [95, 236, 16, 57] +0x000003a4 MCPI R48 R52 0x8 ;; [96, 195, 64, 8] +0x000003a8 JMPF $zero 0x8c ;; [116, 0, 0, 140] +0x000003ac LW R52 R63 0x3 ;; [93, 211, 240, 3] +0x000003b0 RVRT R52 ;; [54, 208, 0, 0] +0x000003b4 LW R52 R63 0x3 ;; [93, 211, 240, 3] +0x000003b8 RVRT R52 ;; [54, 208, 0, 0] +0x000003bc LW R52 R63 0x3 ;; [93, 211, 240, 3] +0x000003c0 RVRT R52 ;; [54, 208, 0, 0] +0x000003c4 LW R52 R63 0x3 ;; [93, 211, 240, 3] +0x000003c8 RVRT R52 ;; [54, 208, 0, 0] +0x000003cc ADDI R52 R59 0x488 ;; [80, 211, 180, 136] +0x000003d0 MULI R51 R43 0x18 ;; [85, 206, 176, 24] +0x000003d4 ADD R51 R52 R51 ;; [16, 207, 76, 192] +0x000003d8 ADDI R52 R59 0x348 ;; [80, 211, 179, 72] +0x000003dc ADDI R50 R59 0x460 ;; [80, 203, 180, 96] +0x000003e0 MCPI R50 R51 0x18 ;; [96, 203, 48, 24] +0x000003e4 ADDI R51 R59 0x2e8 ;; [80, 207, 178, 232] +0x000003e8 MCPI R51 R52 0x18 ;; [96, 207, 64, 24] +0x000003ec ADDI R52 R59 0x460 ;; [80, 211, 180, 96] +0x000003f0 ADDI R51 R59 0x2e8 ;; [80, 207, 178, 232] +0x000003f4 ADDI R50 R59 0x450 ;; [80, 203, 180, 80] +0x000003f8 MCPI R50 R52 0x8 ;; [96, 203, 64, 8] +0x000003fc ADDI R52 R59 0x300 ;; [80, 211, 179, 0] +0x00000400 MCPI R52 R51 0x18 ;; [96, 211, 48, 24] +0x00000404 ADDI R52 R59 0x450 ;; [80, 211, 180, 80] +0x00000408 ADDI R51 R59 0x300 ;; [80, 207, 179, 0] +0x0000040c ADDI R50 R59 0x458 ;; [80, 203, 180, 88] +0x00000410 MCPI R50 R52 0x8 ;; [96, 203, 64, 8] +0x00000414 ADDI R52 R59 0x318 ;; [80, 211, 179, 24] +0x00000418 MCPI R52 R51 0x18 ;; [96, 211, 48, 24] +0x0000041c ADDI R52 R59 0x1e8 ;; [80, 211, 177, 232] +0x00000420 ADDI R51 R59 0x318 ;; [80, 207, 179, 24] +0x00000424 ADDI R50 R59 0x18 ;; [80, 203, 176, 24] +0x00000428 MCPI R50 R51 0x18 ;; [96, 203, 48, 24] +0x0000042c ADDI R51 R59 0x98 ;; [80, 207, 176, 152] +0x00000430 MCPI R51 R50 0x18 ;; [96, 207, 32, 24] +0x00000434 LW R51 R59 0x13 ;; [93, 207, 176, 19] +0x00000438 LW R44 R59 0x14 ;; [93, 179, 176, 20] +0x0000043c LW R50 R59 0x15 ;; [93, 203, 176, 21] +0x00000440 ADDI R47 R59 0x458 ;; [80, 191, 180, 88] +0x00000444 ADDI R46 R50 0x3 ;; [80, 187, 32, 3] +0x00000448 GT R45 R46 R44 ;; [21, 182, 235, 0] +0x0000044c JNZF R45 $zero 0x1 ;; [118, 180, 0, 1] +0x00000450 JMPF $zero 0x5 ;; [116, 0, 0, 5] +0x00000454 MULI R45 R44 0x2 ;; [85, 182, 192, 2] +0x00000458 ADDI R44 R45 0x3 ;; [80, 178, 208, 3] +0x0000045c ALOC R44 ;; [38, 176, 0, 0] +0x00000460 MCP $hp R51 R50 ;; [40, 31, 60, 128] +0x00000464 MOVE R51 $hp ;; [26, 204, 112, 0] +0x00000468 ADDI R45 R59 0xd8 ;; [80, 183, 176, 216] +0x0000046c MCPI R45 R47 0x8 ;; [96, 182, 240, 8] +0x00000470 ADD R50 R51 R50 ;; [16, 203, 60, 128] +0x00000474 MCPI R50 R45 0x3 ;; [96, 202, 208, 3] +0x00000478 ADDI R50 R59 0x100 ;; [80, 203, 177, 0] +0x0000047c SW R59 R51 0x20 ;; [95, 239, 48, 32] +0x00000480 SW R59 R44 0x21 ;; [95, 238, 192, 33] +0x00000484 SW R59 R46 0x22 ;; [95, 238, 224, 34] +0x00000488 ADDI R51 R59 0x30 ;; [80, 207, 176, 48] +0x0000048c MCPI R51 R50 0x18 ;; [96, 207, 32, 24] +0x00000490 MCPI R52 R51 0x18 ;; [96, 211, 48, 24] +0x00000494 ADDI R51 R59 0x378 ;; [80, 207, 179, 120] +0x00000498 MCPI R51 R52 0x18 ;; [96, 207, 64, 24] +0x0000049c ADDI R52 R59 0x378 ;; [80, 211, 179, 120] +0x000004a0 ADDI R51 R59 0x360 ;; [80, 207, 179, 96] +0x000004a4 MCPI R51 R52 0x18 ;; [96, 207, 64, 24] +0x000004a8 ADDI R52 R59 0x460 ;; [80, 211, 180, 96] +0x000004ac ADDI R52 R52 0x8 ;; [80, 211, 64, 8] +0x000004b0 ADDI R51 R59 0x360 ;; [80, 207, 179, 96] +0x000004b4 ADDI R50 R59 0x478 ;; [80, 203, 180, 120] +0x000004b8 MCPI R50 R52 0x10 ;; [96, 203, 64, 16] +0x000004bc ADDI R52 R59 0x330 ;; [80, 211, 179, 48] +0x000004c0 MCPI R52 R51 0x18 ;; [96, 211, 48, 24] +0x000004c4 ADDI R52 R59 0x478 ;; [80, 211, 180, 120] +0x000004c8 ADDI R51 R59 0x148 ;; [80, 207, 177, 72] +0x000004cc MCPI R51 R52 0x10 ;; [96, 207, 64, 16] +0x000004d0 LW R52 R59 0x29 ;; [93, 211, 176, 41] +0x000004d4 EQ R52 R52 $zero ;; [19, 211, 64, 0] +0x000004d8 JNZF R52 $zero 0x1e ;; [118, 208, 0, 30] +0x000004dc LW R52 R59 0x29 ;; [93, 211, 176, 41] +0x000004e0 EQ R52 R52 $one ;; [19, 211, 64, 64] +0x000004e4 JNZF R52 $zero 0x2 ;; [118, 208, 0, 2] +0x000004e8 LW R52 R63 0x4 ;; [93, 211, 240, 4] +0x000004ec RVRT R52 ;; [54, 208, 0, 0] +0x000004f0 LW R52 R59 0x2a ;; [93, 211, 176, 42] +0x000004f4 ADDI R51 R59 0x330 ;; [80, 207, 179, 48] +0x000004f8 ADDI R50 R59 0x230 ;; [80, 203, 178, 48] +0x000004fc MCPI R50 R51 0x18 ;; [96, 203, 48, 24] +0x00000500 ADDI R51 R59 0x198 ;; [80, 207, 177, 152] +0x00000504 MOVI R58 0x1 ;; [114, 232, 0, 1] +0x00000508 MOVE R57 R50 ;; [26, 231, 32, 0] +0x0000050c MOVE R56 R51 ;; [26, 227, 48, 0] +0x00000510 JAL R62 $pc 0x37 ;; [153, 248, 48, 55] +0x00000514 ADDI R50 R59 0x3d8 ;; [80, 203, 179, 216] +0x00000518 MCPI R50 R51 0x18 ;; [96, 203, 48, 24] +0x0000051c ADDI R51 R59 0x3d8 ;; [80, 207, 179, 216] +0x00000520 ADDI R50 R59 0x248 ;; [80, 203, 178, 72] +0x00000524 MCPI R50 R51 0x18 ;; [96, 203, 48, 24] +0x00000528 ADDI R51 R59 0x1b0 ;; [80, 207, 177, 176] +0x0000052c MOVE R58 R52 ;; [26, 235, 64, 0] +0x00000530 MOVE R57 R50 ;; [26, 231, 32, 0] +0x00000534 MOVE R56 R51 ;; [26, 227, 48, 0] +0x00000538 JAL R62 $pc 0x2d ;; [153, 248, 48, 45] +0x0000053c ADDI R52 R59 0x3f0 ;; [80, 211, 179, 240] +0x00000540 MCPI R52 R51 0x18 ;; [96, 211, 48, 24] +0x00000544 ADDI R52 R59 0x3f0 ;; [80, 211, 179, 240] +0x00000548 ADDI R51 R59 0x290 ;; [80, 207, 178, 144] +0x0000054c MCPI R51 R52 0x18 ;; [96, 207, 64, 24] +0x00000550 JMPF $zero 0x18 ;; [116, 0, 0, 24] +0x00000554 LW R52 R59 0x2a ;; [93, 211, 176, 42] +0x00000558 ADDI R51 R59 0x330 ;; [80, 207, 179, 48] +0x0000055c ADDI R50 R59 0x200 ;; [80, 203, 178, 0] +0x00000560 MCPI R50 R51 0x18 ;; [96, 203, 48, 24] +0x00000564 ADDI R51 R59 0x168 ;; [80, 207, 177, 104] +0x00000568 MOVI R58 0x0 ;; [114, 232, 0, 0] +0x0000056c MOVE R57 R50 ;; [26, 231, 32, 0] +0x00000570 MOVE R56 R51 ;; [26, 227, 48, 0] +0x00000574 JAL R62 $pc 0x1e ;; [153, 248, 48, 30] +0x00000578 ADDI R50 R59 0x390 ;; [80, 203, 179, 144] +0x0000057c MCPI R50 R51 0x18 ;; [96, 203, 48, 24] +0x00000580 ADDI R51 R59 0x390 ;; [80, 207, 179, 144] +0x00000584 ADDI R50 R59 0x218 ;; [80, 203, 178, 24] +0x00000588 MCPI R50 R51 0x18 ;; [96, 203, 48, 24] +0x0000058c ADDI R51 R59 0x180 ;; [80, 207, 177, 128] +0x00000590 MOVE R58 R52 ;; [26, 235, 64, 0] +0x00000594 MOVE R57 R50 ;; [26, 231, 32, 0] +0x00000598 MOVE R56 R51 ;; [26, 227, 48, 0] +0x0000059c JAL R62 $pc 0x14 ;; [153, 248, 48, 20] +0x000005a0 ADDI R52 R59 0x3c0 ;; [80, 211, 179, 192] +0x000005a4 MCPI R52 R51 0x18 ;; [96, 211, 48, 24] +0x000005a8 ADDI R52 R59 0x3c0 ;; [80, 211, 179, 192] +0x000005ac ADDI R51 R59 0x290 ;; [80, 207, 178, 144] +0x000005b0 MCPI R51 R52 0x18 ;; [96, 207, 64, 24] +0x000005b4 ADDI R52 R59 0x408 ;; [80, 211, 180, 8] +0x000005b8 MCPI R52 R51 0x18 ;; [96, 211, 48, 24] +0x000005bc ADDI R52 R59 0x408 ;; [80, 211, 180, 8] +0x000005c0 ADDI R51 R59 0x3a8 ;; [80, 207, 179, 168] +0x000005c4 MCPI R51 R52 0x18 ;; [96, 207, 64, 24] +0x000005c8 ADDI R52 R59 0x3a8 ;; [80, 211, 179, 168] +0x000005cc ADDI R51 R59 0x348 ;; [80, 207, 179, 72] +0x000005d0 MCPI R51 R52 0x18 ;; [96, 207, 64, 24] +0x000005d4 ADDI R43 R43 0x1 ;; [80, 174, 176, 1] +0x000005d8 JMPB $zero 0xeb ;; [117, 0, 0, 235] +0x000005dc CFSI 0x4d0 ;; [146, 0, 4, 208] +0x000005e0 MOVE R62 R49 ;; [26, 251, 16, 0] +0x000005e4 POPH 0x81ff8 ;; [152, 8, 31, 248] +0x000005e8 JAL $zero R62 0x0 ;; [153, 3, 224, 0] +0x000005ec PSHH 0x81f80 ;; [150, 8, 31, 128] +0x000005f0 MOVE R59 $sp ;; [26, 236, 80, 0] +0x000005f4 CFEI 0x90 ;; [145, 0, 0, 144] +0x000005f8 ADDI R52 R59 0x78 ;; [80, 211, 176, 120] +0x000005fc MCPI R52 R57 0x18 ;; [96, 211, 144, 24] +0x00000600 ADDI R52 R59 0x60 ;; [80, 211, 176, 96] +0x00000604 ADDI R51 R59 0x78 ;; [80, 207, 176, 120] +0x00000608 MCPI R59 R51 0x18 ;; [96, 239, 48, 24] +0x0000060c ADDI R51 R59 0x30 ;; [80, 207, 176, 48] +0x00000610 MCPI R51 R59 0x18 ;; [96, 207, 176, 24] +0x00000614 LW R51 R59 0x6 ;; [93, 207, 176, 6] +0x00000618 LW R47 R59 0x7 ;; [93, 191, 176, 7] +0x0000061c LW R50 R59 0x8 ;; [93, 203, 176, 8] +0x00000620 ADDI R49 R50 0x8 ;; [80, 199, 32, 8] +0x00000624 GT R48 R49 R47 ;; [21, 195, 27, 192] +0x00000628 JNZF R48 $zero 0x1 ;; [118, 192, 0, 1] +0x0000062c JMPF $zero 0x5 ;; [116, 0, 0, 5] +0x00000630 MULI R48 R47 0x2 ;; [85, 194, 240, 2] +0x00000634 ADDI R47 R48 0x8 ;; [80, 191, 0, 8] +0x00000638 ALOC R47 ;; [38, 188, 0, 0] +0x0000063c MCP $hp R51 R50 ;; [40, 31, 60, 128] +0x00000640 MOVE R51 $hp ;; [26, 204, 112, 0] +0x00000644 ADD R50 R51 R50 ;; [16, 203, 60, 128] +0x00000648 SW R50 R58 0x0 ;; [95, 203, 160, 0] +0x0000064c ADDI R50 R59 0x48 ;; [80, 203, 176, 72] +0x00000650 SW R59 R51 0x9 ;; [95, 239, 48, 9] +0x00000654 SW R59 R47 0xa ;; [95, 238, 240, 10] +0x00000658 SW R59 R49 0xb ;; [95, 239, 16, 11] +0x0000065c ADDI R51 R59 0x18 ;; [80, 207, 176, 24] +0x00000660 MCPI R51 R50 0x18 ;; [96, 207, 32, 24] +0x00000664 MCPI R52 R51 0x18 ;; [96, 211, 48, 24] +0x00000668 MCPI R56 R52 0x18 ;; [96, 227, 64, 24] +0x0000066c CFSI 0x90 ;; [146, 0, 0, 144] +0x00000670 POPH 0x81f80 ;; [152, 8, 31, 128] +0x00000674 JAL $zero R62 0x0 ;; [153, 3, 224, 0] +0x00000678 PSHH 0x81c00 ;; [150, 8, 28, 0] +0x0000067c MOVE R59 $sp ;; [26, 236, 80, 0] +0x00000680 CFEI 0x28 ;; [145, 0, 0, 40] +0x00000684 ADDI R52 R59 0x10 ;; [80, 211, 176, 16] +0x00000688 MCPI R52 R58 0x8 ;; [96, 211, 160, 8] +0x0000068c ADDI R52 R59 0x18 ;; [80, 211, 176, 24] +0x00000690 MCPI R52 R57 0x10 ;; [96, 211, 144, 16] +0x00000694 LW R52 R59 0x3 ;; [93, 211, 176, 3] +0x00000698 LW R51 R59 0x4 ;; [93, 207, 176, 4] +0x0000069c SW R59 R52 0x0 ;; [95, 239, 64, 0] +0x000006a0 SW R59 R51 0x1 ;; [95, 239, 48, 1] +0x000006a4 LW R52 R59 0x0 ;; [93, 211, 176, 0] +0x000006a8 ADDI R51 R59 0x10 ;; [80, 207, 176, 16] +0x000006ac MOVI R50 0x3 ;; [114, 200, 0, 3] +0x000006b0 MEQ R52 R51 R52 R50 ;; [41, 211, 61, 50] +0x000006b4 MOVE R61 R52 ;; [26, 247, 64, 0] +0x000006b8 CFSI 0x28 ;; [146, 0, 0, 40] +0x000006bc POPH 0x81c00 ;; [152, 8, 28, 0] +0x000006c0 JAL $zero R62 0x0 ;; [153, 3, 224, 0] +0x000006c4 NOOP ;; [71, 0, 0, 0] +.data_section: +0x000006c8 .word i3647243719605075626, as hex be bytes ([32, 9D, 9C, D6, CC, 55, BE, AA]) +0x000006d0 .bytes as hex ([73, 65, 74]), len i3, as ascii "set" +0x000006d8 .bytes as hex ([61, 64, 64]), len i3, as ascii "add" +0x000006e0 .word i18446744073709486084, as hex be bytes ([FF, FF, FF, FF, FF, FF, 00, 04]) +0x000006e8 .word i14757395258967588866, as hex be bytes ([CC, CC, CC, CC, CC, CC, 00, 02]) +>>>>>>> a94b693b4 (update tests) ;; --- END OF TARGET BYTECODE --- Finished release [optimized + fuel] target(s) [1.592 KB] in ??? diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/match_expressions_all/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/match_expressions_all/stdout.snap index 85e9ff170da..666a75f76aa 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/match_expressions_all/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/match_expressions_all/stdout.snap @@ -7,7 +7,11 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/language/match_expressions_all Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-assert) Compiling script match_expressions_all (test/src/e2e_vm_tests/test_programs/should_pass/language/match_expressions_all) +<<<<<<< HEAD Finished debug [unoptimized + fuel] target(s) [2.84 KB] in ??? +======= + Finished debug [unoptimized + fuel] target(s) [2.904 KB] in ??? +>>>>>>> a94b693b4 (update tests) > forc build --path test/src/e2e_vm_tests/test_programs/should_pass/language/match_expressions_all --ir final --asm final --release | filter-fn match_expressions_all return_match_on_str_slice @@ -20,6 +24,7 @@ fn return_match_on_str_slice_8(mut param: __ptr slice) -> u64 { local slice __anon_5 local slice __matched_value_1 +<<<<<<< HEAD entry(mut param: __ptr slice): v263v1 = get_local __ptr slice, __matched_value_1 mem_copy_val v263v1, param @@ -85,6 +90,78 @@ fn return_match_on_str_slice_8(mut param: __ptr slice) -> u64 { block8(mut v262v1: u64): ret u64 v262v1 +======= + entry(param: __ptr slice): + v284v1 = get_local __ptr slice, __matched_value_1 + mem_copy_val v284v1, param + v286v1 = get_global __ptr string<5>, __const_global + v287v1 = cast_ptr v286v1 to ptr + v288v1 = get_local __ptr { ptr, u64 }, __anon_0 + v289v1 = const u64 0 + v290v1 = get_elem_ptr v288v1, __ptr ptr, v289v1 + store v287v1 to v290v1 + v292v1 = const u64 1 + v293v1 = get_elem_ptr v288v1, __ptr u64, v292v1 + v294v1 = const u64 5 + store v294v1 to v293v1 + v296v1 = get_local __ptr slice, __anon_1 + mem_copy_bytes v296v1, v288v1, 16 + v298v1 = get_local __ptr slice, __anon_1 + v299v1 = call eq_9(param, v298v1) + v300v1 = const u64 1 + cbr v299v1, block8(v300v1), block1() + + block1(): + v302v1 = get_local __ptr slice, __matched_value_1 + v303v1 = get_global __ptr string<7>, __const_global0 + v304v1 = cast_ptr v303v1 to ptr + v305v1 = get_local __ptr { ptr, u64 }, __anon_2 + v306v1 = const u64 0 + v307v1 = get_elem_ptr v305v1, __ptr ptr, v306v1 + store v304v1 to v307v1 + v309v1 = const u64 1 + v310v1 = get_elem_ptr v305v1, __ptr u64, v309v1 + v311v1 = const u64 7 + store v311v1 to v310v1 + v313v1 = get_local __ptr slice, __anon_3 + mem_copy_bytes v313v1, v305v1, 16 + v315v1 = get_local __ptr slice, __anon_3 + v316v1 = call eq_9(v302v1, v315v1) + v317v1 = const u64 2 + cbr v316v1, block7(v317v1), block3() + + block3(): + v319v1 = get_local __ptr slice, __matched_value_1 + v320v1 = get_global __ptr string<5>, __const_global1 + v321v1 = cast_ptr v320v1 to ptr + v322v1 = get_local __ptr { ptr, u64 }, __anon_4 + v323v1 = const u64 0 + v324v1 = get_elem_ptr v322v1, __ptr ptr, v323v1 + store v321v1 to v324v1 + v326v1 = const u64 1 + v327v1 = get_elem_ptr v322v1, __ptr u64, v326v1 + v328v1 = const u64 5 + store v328v1 to v327v1 + v330v1 = get_local __ptr slice, __anon_5 + mem_copy_bytes v330v1, v322v1, 16 + v332v1 = get_local __ptr slice, __anon_5 + v333v1 = call eq_9(v319v1, v332v1) + v334v1 = const u64 3 + cbr v333v1, block6(v334v1), block5() + + block5(): + v336v1 = const u64 1000 + br block6(v336v1) + + block6(v281v1: u64): + br block7(v281v1) + + block7(v282v1: u64): + br block8(v282v1) + + block8(v283v1: u64): + ret u64 v283v1 +>>>>>>> a94b693b4 (update tests) } diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panic_handling_in_unit_tests/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panic_handling_in_unit_tests/stdout.snap index 6b09427aacc..7cf0438a03e 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panic_handling_in_unit_tests/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panic_handling_in_unit_tests/stdout.snap @@ -23,7 +23,11 @@ ____ tested -- panic_handling_in_unit_tests +<<<<<<< HEAD test passing_dbgs_and_logs ... ok (???, 2697 gas) +======= + test passing_dbgs_and_logs ... ok (???, 2932 gas) +>>>>>>> a94b693b4 (update tests) debug output: [src/main.sw:23:13] "This is a passing test containing `__dbg` outputs." = "This is a passing test containing `__dbg` outputs." [src/main.sw:25:13] x = 42 @@ -31,7 +35,11 @@ tested -- panic_handling_in_unit_tests AsciiString { data: "This is a log from the passing test." }, log rb: 10098701174489624218 42, log rb: 1515152261580153489 raw logs: +<<<<<<< HEAD [{"LogData":{"data":"0000000000000024546869732069732061206c6f672066726f6d207468652070617373696e6720746573742e","digest":"29d742ad9093cdf81404ff756467a44448729b85ab3c0d65197829fb61d2dd29","id":"0000000000000000000000000000000000000000000000000000000000000000","is":10368,"len":44,"pc":10832,"ptr":67107840,"ra":0,"rb":10098701174489624218}},{"LogData":{"data":"000000000000002a","digest":"a6bb133cb1e3638ad7b8a3ff0539668e9e56f9b850ef1b2a810f5422eaa6c323","id":"0000000000000000000000000000000000000000000000000000000000000000","is":10368,"len":8,"pc":15456,"ptr":19056,"ra":0,"rb":1515152261580153489}}] +======= +[{"LogData":{"data":"0000000000000024546869732069732061206c6f672066726f6d207468652070617373696e6720746573742e","digest":"29d742ad9093cdf81404ff756467a44448729b85ab3c0d65197829fb61d2dd29","id":"0000000000000000000000000000000000000000000000000000000000000000","is":10368,"len":44,"pc":10832,"ptr":67107840,"ra":0,"rb":10098701174489624218}},{"LogData":{"data":"000000000000002a","digest":"a6bb133cb1e3638ad7b8a3ff0539668e9e56f9b850ef1b2a810f5422eaa6c323","id":"0000000000000000000000000000000000000000000000000000000000000000","is":10368,"len":8,"pc":15544,"ptr":19136,"ra":0,"rb":1515152261580153489}}] +>>>>>>> a94b693b4 (update tests) test passing_no_dbgs_or_logs ... ok (???, 69 gas) test result: OK. 2 passed; 0 failed; finished in ??? @@ -60,6 +68,7 @@ ____ tested -- panic_handling_in_unit_tests +<<<<<<< HEAD test passing_dbgs_and_logs ... ok (???, 2697 gas) test passing_no_dbgs_or_logs ... ok (???, 69 gas) test failing_revert_intrinsic ... FAILED (???, 71 gas) @@ -67,6 +76,15 @@ tested -- panic_handling_in_unit_tests test failing_error_signal_assert ... FAILED (???, 383 gas) test failing_error_signal_assert_eq ... FAILED (???, 2211 gas) test failing_error_signal_assert_ne ... FAILED (???, 2205 gas) +======= + test passing_dbgs_and_logs ... ok (???, 2932 gas) + test passing_no_dbgs_or_logs ... ok (???, 69 gas) + test failing_revert_intrinsic ... FAILED (???, 71 gas) + test failing_revert_function_with_dbgs_and_logs ... FAILED (???, 2884 gas) + test failing_error_signal_assert ... FAILED (???, 524 gas) + test failing_error_signal_assert_eq ... FAILED (???, 2352 gas) + test failing_error_signal_assert_ne ... FAILED (???, 2346 gas) +>>>>>>> a94b693b4 (update tests) test failing_error_signal_require_str_error ... FAILED (???, 821 gas) test failing_error_signal_require_enum_error ... FAILED (???, 929 gas) test failing_panic_no_arg ... FAILED (???, 571 gas) @@ -149,8 +167,13 @@ AsciiString { data: "We will get logged the asserted values and this message." } "id": "0000000000000000000000000000000000000000000000000000000000000000", "is": 10368, "len": 8, +<<<<<<< HEAD "pc": 15456, "ptr": 19008, +======= + "pc": 15544, + "ptr": 19088, +>>>>>>> a94b693b4 (update tests) "ra": 0, "rb": 1515152261580153489 } @@ -162,8 +185,13 @@ AsciiString { data: "We will get logged the asserted values and this message." } "id": "0000000000000000000000000000000000000000000000000000000000000000", "is": 10368, "len": 8, +<<<<<<< HEAD "pc": 15456, "ptr": 19008, +======= + "pc": 15544, + "ptr": 19088, +>>>>>>> a94b693b4 (update tests) "ra": 0, "rb": 1515152261580153489 } @@ -202,8 +230,13 @@ AsciiString { data: "We will get logged the asserted values and this message." } "id": "0000000000000000000000000000000000000000000000000000000000000000", "is": 10368, "len": 8, +<<<<<<< HEAD "pc": 15456, "ptr": 19000, +======= + "pc": 15544, + "ptr": 19080, +>>>>>>> a94b693b4 (update tests) "ra": 0, "rb": 1515152261580153489 } @@ -215,8 +248,13 @@ AsciiString { data: "We will get logged the asserted values and this message." } "id": "0000000000000000000000000000000000000000000000000000000000000000", "is": 10368, "len": 8, +<<<<<<< HEAD "pc": 15456, "ptr": 19000, +======= + "pc": 15544, + "ptr": 19080, +>>>>>>> a94b693b4 (update tests) "ra": 0, "rb": 1515152261580153489 } diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_contract/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_contract/stdout.snap index ab92f855202..e3ee920f625 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_contract/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_contract/stdout.snap @@ -8,17 +8,29 @@ output: Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling library panicking_lib (test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_lib) Compiling contract panicking_contract (test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_contract) +<<<<<<< HEAD Finished debug [unoptimized + fuel] target(s) [8.08 KB] in ??? +======= + Finished debug [unoptimized + fuel] target(s) [8.152 KB] in ??? +>>>>>>> a94b693b4 (update tests) Running 12 tests, filtered 0 tests tested -- panicking_contract +<<<<<<< HEAD test test_panicking_in_contract_self_impl ... ok (???, 1454 gas) +======= + test test_panicking_in_contract_self_impl ... ok (???, 1513 gas) +>>>>>>> a94b693b4 (update tests) revert code: 828000000000000c ├─ panic message: panicking in contract self impl ├─ panicked: in ::panicking_in_contract_self_impl │ └─ at panicking_contract@1.2.3, src/main.sw:22:9 +<<<<<<< HEAD test test_directly_panicking_method ... ok (???, 2292 gas) +======= + test test_directly_panicking_method ... ok (???, 2351 gas) +>>>>>>> a94b693b4 (update tests) revert code: 820000000000000b ├─ panic message: Error C. ├─ panic value: C(true) @@ -26,7 +38,11 @@ tested -- panicking_contract │ └─ at panicking_contract@1.2.3, src/main.sw:28:9 decoded log values: C(true), log rb: 5503570629422409978 +<<<<<<< HEAD test test_nested_panic_inlined ... ok (???, 2791 gas) +======= + test test_nested_panic_inlined ... ok (???, 2850 gas) +>>>>>>> a94b693b4 (update tests) revert code: 8000000000c01001 ├─ panic message: Error E. ├─ panic value: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]) @@ -38,7 +54,11 @@ C(true), log rb: 5503570629422409978 └─ at panicking_contract@1.2.3, src/main.sw:32:9 decoded log values: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]), log rb: 5503570629422409978 +<<<<<<< HEAD test test_nested_panic_inlined_same_revert_code ... ok (???, 2791 gas) +======= + test test_nested_panic_inlined_same_revert_code ... ok (???, 2850 gas) +>>>>>>> a94b693b4 (update tests) revert code: 8000000000c01001 ├─ panic message: Error E. ├─ panic value: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]) @@ -50,7 +70,11 @@ E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString └─ at panicking_contract@1.2.3, src/main.sw:32:9 decoded log values: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]), log rb: 5503570629422409978 +<<<<<<< HEAD test test_nested_panic_non_inlined ... ok (???, 2851 gas) +======= + test test_nested_panic_non_inlined ... ok (???, 2910 gas) +>>>>>>> a94b693b4 (update tests) revert code: 8180000002804808 ├─ panic message: Error E. ├─ panic value: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]) @@ -62,7 +86,11 @@ E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString └─ at panicking_contract@1.2.3, src/main.sw:40:9 decoded log values: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]), log rb: 5503570629422409978 +<<<<<<< HEAD test test_nested_panic_non_inlined_same_revert_code ... ok (???, 2851 gas) +======= + test test_nested_panic_non_inlined_same_revert_code ... ok (???, 2910 gas) +>>>>>>> a94b693b4 (update tests) revert code: 8180000002804808 ├─ panic message: Error E. ├─ panic value: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]) @@ -74,7 +102,11 @@ E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { d └─ at panicking_contract@1.2.3, src/main.sw:40:9 decoded log values: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]), log rb: 5503570629422409978 +<<<<<<< HEAD test test_generic_panic_with_unit ... ok (???, 1900 gas) +======= + test test_generic_panic_with_unit ... ok (???, 1959 gas) +>>>>>>> a94b693b4 (update tests) revert code: 8100000000003806 ├─ panic value: () ├─ panicked: in panicking_lib::generic_panic @@ -83,7 +115,11 @@ E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { d └─ at panicking_contract@1.2.3, src/main.sw:48:9 decoded log values: (), log rb: 3330666440490685604 +<<<<<<< HEAD test test_generic_panic_with_unit_same_revert_code ... ok (???, 1900 gas) +======= + test test_generic_panic_with_unit_same_revert_code ... ok (???, 1959 gas) +>>>>>>> a94b693b4 (update tests) revert code: 8100000000003806 ├─ panic value: () ├─ panicked: in panicking_lib::generic_panic @@ -92,7 +128,11 @@ E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { d └─ at panicking_contract@1.2.3, src/main.sw:48:9 decoded log values: (), log rb: 3330666440490685604 +<<<<<<< HEAD test test_generic_panic_with_str ... ok (???, 2118 gas) +======= + test test_generic_panic_with_str ... ok (???, 2177 gas) +>>>>>>> a94b693b4 (update tests) revert code: 8080000000002804 ├─ panic message: generic panic with string ├─ panicked: in panicking_lib::generic_panic @@ -101,7 +141,11 @@ E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { d └─ at panicking_contract@1.2.3, src/main.sw:56:9 decoded log values: AsciiString { data: "generic panic with string" }, log rb: 10098701174489624218 +<<<<<<< HEAD test test_generic_panic_with_different_str_same_revert_code ... ok (???, 2261 gas) +======= + test test_generic_panic_with_different_str_same_revert_code ... ok (???, 2320 gas) +>>>>>>> a94b693b4 (update tests) revert code: 808000000000d019 ├─ panic message: generic panic with different string ├─ panicked: in panicking_lib::generic_panic @@ -110,7 +154,11 @@ AsciiString { data: "generic panic with string" }, log rb: 10098701174489624218 └─ at panicking_contract@1.2.3, src/main.sw:60:9 decoded log values: AsciiString { data: "generic panic with different string" }, log rb: 10098701174489624218 +<<<<<<< HEAD test test_generic_panic_with_error_type_enum ... ok (???, 2211 gas) +======= + test test_generic_panic_with_error_type_enum ... ok (???, 2270 gas) +>>>>>>> a94b693b4 (update tests) revert code: 830000000000700d ├─ panic message: Error A. ├─ panic value: A @@ -120,7 +168,11 @@ AsciiString { data: "generic panic with different string" }, log rb: 10098701174 └─ at panicking_contract@1.2.3, src/main.sw:64:9 decoded log values: A, log rb: 5503570629422409978 +<<<<<<< HEAD test test_generic_panic_with_error_type_enum_different_variant_same_revert_code ... ok (???, 2394 gas) +======= + test test_generic_panic_with_error_type_enum_different_variant_same_revert_code ... ok (???, 2453 gas) +>>>>>>> a94b693b4 (update tests) revert code: 830000000000e01b ├─ panic message: Error B. ├─ panic value: B(42) diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_lib/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_lib/stdout.snap index b2dfbed7317..b6b3ddc4559 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_lib/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_lib/stdout.snap @@ -182,12 +182,20 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_lib Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling library panicking_lib (test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_lib) +<<<<<<< HEAD Finished release [optimized + fuel] target(s) [3.904 KB] in ??? +======= + Finished release [optimized + fuel] target(s) [4.24 KB] in ??? +>>>>>>> a94b693b4 (update tests) Running 18 tests, filtered 0 tests tested -- panicking_lib +<<<<<<< HEAD test test_nested_panic_inlined ... ok (???, 1271 gas) +======= + test test_nested_panic_inlined ... ok (???, 1274 gas) +>>>>>>> a94b693b4 (update tests) revert code: 8000000000000000 ├─ panic message: Error E. ├─ panic value: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]) @@ -195,7 +203,11 @@ tested -- panicking_lib └─ at panicking_lib, src/lib.sw:35:5 decoded log values: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]), log rb: 2721958641300806892 +<<<<<<< HEAD test test_nested_panic_inlined_same_revert_code ... ok (???, 1271 gas) +======= + test test_nested_panic_inlined_same_revert_code ... ok (???, 1274 gas) +>>>>>>> a94b693b4 (update tests) revert code: 8000000000000000 ├─ panic message: Error E. ├─ panic value: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]) @@ -203,7 +215,11 @@ E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString └─ at panicking_lib, src/lib.sw:35:5 decoded log values: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]), log rb: 2721958641300806892 +<<<<<<< HEAD test test_nested_panic_non_inlined ... ok (???, 1289 gas) +======= + test test_nested_panic_non_inlined ... ok (???, 1294 gas) +>>>>>>> a94b693b4 (update tests) revert code: 8080000000000000 ├─ panic message: Error E. ├─ panic value: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]) @@ -211,7 +227,11 @@ E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString └─ at panicking_lib, src/lib.sw:41:9 decoded log values: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]), log rb: 2721958641300806892 +<<<<<<< HEAD test test_nested_panic_non_inlined_same_revert_code ... ok (???, 1289 gas) +======= + test test_nested_panic_non_inlined_same_revert_code ... ok (???, 1294 gas) +>>>>>>> a94b693b4 (update tests) revert code: 8080000000000000 ├─ panic message: Error E. ├─ panic value: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]) @@ -247,7 +267,11 @@ AsciiString { data: "generic panic with string" }, log rb: 10098701174489624218 └─ at panicking_lib, src/lib.sw:74:5 decoded log values: AsciiString { data: "generic panic different string" }, log rb: 10098701174489624218 +<<<<<<< HEAD test test_generic_panic_with_error_type_enum_variant ... ok (???, 750 gas) +======= + test test_generic_panic_with_error_type_enum_variant ... ok (???, 731 gas) +>>>>>>> a94b693b4 (update tests) revert code: 8200000000000000 ├─ panic message: Error A. ├─ panic value: A @@ -255,7 +279,11 @@ AsciiString { data: "generic panic different string" }, log rb: 1009870117448962 └─ at panicking_lib, src/lib.sw:74:5 decoded log values: A, log rb: 2721958641300806892 +<<<<<<< HEAD test test_generic_panic_with_error_type_enum_different_variant_same_revert_code ... ok (???, 750 gas) +======= + test test_generic_panic_with_error_type_enum_different_variant_same_revert_code ... ok (???, 731 gas) +>>>>>>> a94b693b4 (update tests) revert code: 8200000000000000 ├─ panic message: Error A. ├─ panic value: A @@ -282,7 +310,11 @@ A, log rb: 2721958641300806892 ├─ panic message: panic with string └─ panicked: in panicking_lib::test_panic_with_str └─ at panicking_lib, src/lib.sw:123:5 +<<<<<<< HEAD test test_panic_with_error_type_enum ... ok (???, 855 gas) +======= + test test_panic_with_error_type_enum ... ok (???, 840 gas) +>>>>>>> a94b693b4 (update tests) revert code: 8400000000000000 ├─ panic message: Error C. ├─ panic value: C(true) @@ -290,28 +322,44 @@ A, log rb: 2721958641300806892 └─ at panicking_lib, src/lib.sw:128:5 decoded log values: C(true), log rb: 2721958641300806892 +<<<<<<< HEAD test test_panic_with_generic_error_type_enum ... ok (???, 767 gas) +======= + test test_panic_with_generic_error_type_enum ... ok (???, 772 gas) +>>>>>>> a94b693b4 (update tests) revert code: 8480000000000000 ├─ panic value: A(42) └─ panicked: in panicking_lib::test_panic_with_generic_error_type_enum └─ at panicking_lib, src/lib.sw:133:5 decoded log values: A(42), log rb: 12408470889216862137 +<<<<<<< HEAD test test_panic_with_nested_generic_error_type ... ok (???, 1030 gas) +======= + test test_panic_with_nested_generic_error_type ... ok (???, 1044 gas) +>>>>>>> a94b693b4 (update tests) revert code: 8500000000000000 ├─ panic value: B(B(C(true))) └─ panicked: in panicking_lib::test_panic_with_nested_generic_error_type └─ at panicking_lib, src/lib.sw:138:5 decoded log values: B(B(C(true))), log rb: 14988555917426256081 +<<<<<<< HEAD test test_panic_with_generic_error_type_enum_with_abi_encode ... ok (???, 767 gas) +======= + test test_panic_with_generic_error_type_enum_with_abi_encode ... ok (???, 772 gas) +>>>>>>> a94b693b4 (update tests) revert code: 8580000000000000 ├─ panic value: A(42) └─ panicked: in panicking_lib::test_panic_with_generic_error_type_enum_with_abi_encode └─ at panicking_lib, src/lib.sw:143:5 decoded log values: A(42), log rb: 17388243649088655852 +<<<<<<< HEAD test test_panic_with_nested_generic_error_type_enum_with_abi_encode ... ok (???, 1030 gas) +======= + test test_panic_with_nested_generic_error_type_enum_with_abi_encode ... ok (???, 1044 gas) +>>>>>>> a94b693b4 (update tests) revert code: 8600000000000000 ├─ panic value: B(B(C(true))) └─ panicked: in panicking_lib::test_panic_with_nested_generic_error_type_enum_with_abi_encode diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/stdlib/vec/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/stdlib/vec/stdout.snap new file mode 100644 index 00000000000..d1ab953dc25 --- /dev/null +++ b/test/src/e2e_vm_tests/test_programs/should_pass/stdlib/vec/stdout.snap @@ -0,0 +1,20 @@ +--- +source: test/src/snapshot/mod.rs +--- +> forc test --path test/src/e2e_vm_tests/test_programs/should_pass/stdlib/vec --logs +exit status: 0 +output: + Building test/src/e2e_vm_tests/test_programs/should_pass/stdlib/vec + Compiling library std (sway-lib-std) + Compiling script vec (test/src/e2e_vm_tests/test_programs/should_pass/stdlib/vec) + Finished debug [unoptimized + fuel] target(s) [155.208 KB] in ??? + Running 2 tests, filtered 0 tests + +tested -- vec + + test test_main ... ok (???, 193385 gas) + test test_zst ... ok (???, 11580 gas) + +test result: OK. 2 passed; 0 failed; finished in ??? + + Finished in ??? diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/stdlib/vec_encoding_decoding/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/stdlib/vec_encoding_decoding/stdout.snap new file mode 100644 index 00000000000..13df4ed4863 --- /dev/null +++ b/test/src/e2e_vm_tests/test_programs/should_pass/stdlib/vec_encoding_decoding/stdout.snap @@ -0,0 +1,36 @@ +--- +source: test/src/snapshot/mod.rs +--- +> forc test --path test/src/e2e_vm_tests/test_programs/should_pass/stdlib/vec_encoding_decoding --release --logs +exit status: 0 +output: + Building test/src/e2e_vm_tests/test_programs/should_pass/stdlib/vec_encoding_decoding + Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-vec) + Compiling script vec_encoding_decoding (test/src/e2e_vm_tests/test_programs/should_pass/stdlib/vec_encoding_decoding) + Finished release [optimized + fuel] target(s) [10.744 KB] in ??? + Running 6 tests, filtered 0 tests + +tested -- vec_encoding_decoding + + test vec_trivial ... ok (???, 2904 gas) + decoded log values: +[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], log rb: 15402277555065905665 + test nested_vec_trivial ... ok (???, 19431 gas) + decoded log values: +[[], [0], [0, 1], [0, 1, 2], [0, 1, 2, 3], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4, 5], [0, 1, 2, 3, 4, 5, 6], [0, 1, 2, 3, 4, 5, 6, 7], [0, 1, 2, 3, 4, 5, 6, 7, 8]], log rb: 7518769745117093018 + test vec_non_trivial ... ok (???, 7028 gas) + decoded log values: +[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], log rb: 1424139416812312134 + test nested_vec_non_trivial ... ok (???, 36229 gas) + decoded log values: +[[], [0], [0, 1], [0, 1, 2], [0, 1, 2, 3], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4, 5], [0, 1, 2, 3, 4, 5, 6], [0, 1, 2, 3, 4, 5, 6, 7], [0, 1, 2, 3, 4, 5, 6, 7, 8]], log rb: 16171443785104013487 + test vec_encode_zst ... ok (???, 2750 gas) + decoded log values: +[(), (), (), (), (), (), (), (), (), ()], log rb: 7172587179247292377 + test nested_vec_zst ... ok (???, 18906 gas) + decoded log values: +[[], [()], [(), ()], [(), (), ()], [(), (), (), ()], [(), (), (), (), ()], [(), (), (), (), (), ()], [(), (), (), (), (), (), ()], [(), (), (), (), (), (), (), ()], [(), (), (), (), (), (), (), (), ()]], log rb: 15095959372321865352 + +test result: OK. 6 passed; 0 failed; finished in ??? + + Finished in ??? diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call/stdout.snap index b77244df672..69aa32b9105 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call/stdout.snap @@ -7,11 +7,16 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-vec) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) +<<<<<<< HEAD Finished release [optimized + fuel] target(s) [19.408 KB] in ??? +======= + Finished release [optimized + fuel] target(s) [24.824 KB] in ??? +>>>>>>> a94b693b4 (update tests) Running 33 tests, filtered 0 tests tested -- const_of_contract_call +<<<<<<< HEAD test cost_of_in_bool ... ok (???, 1736 gas) test cost_of_in_u8 ... ok (???, 1704 gas) test cost_of_in_u16 ... ok (???, 1779 gas) @@ -45,6 +50,41 @@ tested -- const_of_contract_call test in_vec_not_trivial ... ok (???, 5868 gas) test order_args_without_trivial_enum ... ok (???, 3049 gas) test order_args_with_trivial_enum ... ok (???, 3213 gas) +======= + test cost_of_in_bool ... ok (???, 1804 gas) + test cost_of_in_u8 ... ok (???, 1772 gas) + test cost_of_in_u16 ... ok (???, 1937 gas) + test cost_of_in_u32 ... ok (???, 2044 gas) + test cost_of_in_u64 ... ok (???, 1638 gas) + test cost_of_in_u256 ... ok (???, 1668 gas) + test cost_of_in_b256 ... ok (???, 1658 gas) + test cost_of_in_str_0 ... ok (???, 2010 gas) + test cost_of_in_str_1 ... ok (???, 2140 gas) + test cost_of_in_str_8 ... ok (???, 2147 gas) + test cost_of_in_str_16 ... ok (???, 2144 gas) + test cost_of_in_str_32 ... ok (???, 2154 gas) + test cost_of_in_array_0 ... ok (???, 1607 gas) + test cost_of_in_array_1 ... ok (???, 1667 gas) + test cost_of_in_array_8 ... ok (???, 2177 gas) + test cost_of_in_array_16 ... ok (???, 1707 gas) + test cost_of_in_array_32 ... ok (???, 1756 gas) + test cost_of_in_array_64 ... ok (???, 1849 gas) + test cost_of_in_tuple_0 ... ok (???, 1620 gas) + test cost_of_in_tuple_1 ... ok (???, 1682 gas) + test cost_of_in_tuple_2 ... ok (???, 1700 gas) + test cost_of_in_tuple_3 ... ok (???, 1708 gas) + test cost_of_in_tuple_4 ... ok (???, 1715 gas) + test in_struct_u64 ... ok (???, 1670 gas) + test in_struct_u64_u64 ... ok (???, 1695 gas) + test in_struct_u64_u64_u64 ... ok (???, 1711 gas) + test in_enum_u64 ... ok (???, 1750 gas) + test in_enum_u64_u64 ... ok (???, 1752 gas) + test in_enum_u64_u64_u64 ... ok (???, 1765 gas) + test in_vec_trivial ... ok (???, 2916 gas) + test in_vec_not_trivial ... ok (???, 6198 gas) + test order_args_without_trivial_enum ... ok (???, 3248 gas) + test order_args_with_trivial_enum ... ok (???, 3460 gas) +>>>>>>> a94b693b4 (update tests) test result: OK. 33 passed; 0 failed; finished in ??? @@ -204,7 +244,11 @@ output: tested -- const_of_contract_call +<<<<<<< HEAD test isolated_cost_of_in_bool ... ok (???, 1540 gas) +======= + test isolated_cost_of_in_bool ... ok (???, 1580 gas) +>>>>>>> a94b693b4 (update tests) test result: OK. 1 passed; 0 failed; finished in ??? @@ -279,12 +323,20 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-vec) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) +<<<<<<< HEAD Finished release [optimized + fuel] target(s) [1.992 KB] in ??? +======= + Finished release [optimized + fuel] target(s) [2.32 KB] in ??? +>>>>>>> a94b693b4 (update tests) Running 1 test, filtered 0 tests tested -- const_of_contract_call +<<<<<<< HEAD test order_args_without_trivial_enum ... ok (???, 2822 gas) +======= + test order_args_without_trivial_enum ... ok (???, 2982 gas) +>>>>>>> a94b693b4 (update tests) test result: OK. 1 passed; 0 failed; finished in ??? @@ -299,7 +351,11 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-vec) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) +<<<<<<< HEAD Finished release [optimized + fuel] target(s) [2.288 KB] in ??? +======= + Finished release [optimized + fuel] target(s) [2.688 KB] in ??? +>>>>>>> a94b693b4 (update tests) Running 1 test, filtered 0 tests tested -- const_of_contract_call @@ -439,7 +495,11 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-vec) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) +<<<<<<< HEAD Finished release [optimized + fuel] target(s) [656 B] in ??? +======= + Finished release [optimized + fuel] target(s) [760 B] in ??? +>>>>>>> a94b693b4 (update tests) Running 1 test, filtered 0 tests tested -- const_of_contract_call @@ -459,7 +519,11 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-vec) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) +<<<<<<< HEAD Finished release [optimized + fuel] target(s) [656 B] in ??? +======= + Finished release [optimized + fuel] target(s) [760 B] in ??? +>>>>>>> a94b693b4 (update tests) Running 1 test, filtered 0 tests tested -- const_of_contract_call @@ -519,7 +583,11 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-vec) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) +<<<<<<< HEAD Finished release [optimized + fuel] target(s) [640 B] in ??? +======= + Finished release [optimized + fuel] target(s) [744 B] in ??? +>>>>>>> a94b693b4 (update tests) Running 1 test, filtered 0 tests tested -- const_of_contract_call @@ -539,7 +607,11 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-vec) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) +<<<<<<< HEAD Finished release [optimized + fuel] target(s) [640 B] in ??? +======= + Finished release [optimized + fuel] target(s) [744 B] in ??? +>>>>>>> a94b693b4 (update tests) Running 1 test, filtered 0 tests tested -- const_of_contract_call @@ -559,12 +631,20 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-vec) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) +<<<<<<< HEAD Finished release [optimized + fuel] target(s) [752 B] in ??? +======= + Finished release [optimized + fuel] target(s) [744 B] in ??? +>>>>>>> a94b693b4 (update tests) Running 1 test, filtered 0 tests tested -- const_of_contract_call +<<<<<<< HEAD test isolated_cost_of_in_tuple_4 ... ok (???, 1443 gas) +======= + test isolated_cost_of_in_tuple_4 ... ok (???, 1477 gas) +>>>>>>> a94b693b4 (update tests) test result: OK. 1 passed; 0 failed; finished in ??? @@ -579,12 +659,20 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-vec) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) +<<<<<<< HEAD Finished release [optimized + fuel] target(s) [1.064 KB] in ??? +======= + Finished release [optimized + fuel] target(s) [1.176 KB] in ??? +>>>>>>> a94b693b4 (update tests) Running 1 test, filtered 0 tests tested -- const_of_contract_call +<<<<<<< HEAD test isolated_cost_of_in_u16 ... ok (???, 1682 gas) +======= + test isolated_cost_of_in_u16 ... ok (???, 1723 gas) +>>>>>>> a94b693b4 (update tests) test result: OK. 1 passed; 0 failed; finished in ??? @@ -619,12 +707,20 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-vec) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) +<<<<<<< HEAD Finished release [optimized + fuel] target(s) [1.152 KB] in ??? +======= + Finished release [optimized + fuel] target(s) [1.272 KB] in ??? +>>>>>>> a94b693b4 (update tests) Running 1 test, filtered 0 tests tested -- const_of_contract_call +<<<<<<< HEAD test isolated_cost_of_in_u32 ... ok (???, 1749 gas) +======= + test isolated_cost_of_in_u32 ... ok (???, 1791 gas) +>>>>>>> a94b693b4 (update tests) test result: OK. 1 passed; 0 failed; finished in ??? @@ -659,7 +755,11 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-vec) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) +<<<<<<< HEAD Finished release [optimized + fuel] target(s) [824 B] in ??? +======= + Finished release [optimized + fuel] target(s) [944 B] in ??? +>>>>>>> a94b693b4 (update tests) Running 1 test, filtered 0 tests tested -- const_of_contract_call @@ -684,7 +784,11 @@ output: tested -- const_of_contract_call +<<<<<<< HEAD test in_vec_not_trivial ... ok (???, 4893 gas) +======= + test in_vec_not_trivial ... ok (???, 5055 gas) +>>>>>>> a94b693b4 (update tests) test result: OK. 1 passed; 0 failed; finished in ??? From f55e96434b85ba3ce6731445e3aa79a30e269abe Mon Sep 17 00:00:00 2001 From: xunilrj Date: Fri, 5 Jun 2026 15:12:27 -0300 Subject: [PATCH 05/42] update tests --- .../language/eq_custom_type/stdout.snap | 70 +++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 test/src/e2e_vm_tests/test_programs/should_pass/language/eq_custom_type/stdout.snap diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/eq_custom_type/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/eq_custom_type/stdout.snap new file mode 100644 index 00000000000..a9d6b213537 --- /dev/null +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/eq_custom_type/stdout.snap @@ -0,0 +1,70 @@ +--- +source: test/src/snapshot/mod.rs +--- +> forc build --path test/src/e2e_vm_tests/test_programs/should_pass/stdlib/raw_ptr --release +exit status: 0 +output: + Building test/src/e2e_vm_tests/test_programs/should_pass/stdlib/raw_ptr + Compiling library std (sway-lib-std) + Compiling script raw_ptr (test/src/e2e_vm_tests/test_programs/should_pass/stdlib/raw_ptr) + Finished release [optimized + fuel] target(s) [2.792 KB] in ??? + +> forc build --path test/src/e2e_vm_tests/test_programs/should_pass/stdlib/raw_ptr --release --ir final --asm final --bytecode | filter-fn raw_ptr raw_ptr_write + +fn raw_ptr_write_55(ptr: ptr, value: u8) -> () { + entry(ptr: ptr, value: u8): + v665v1 = asm(ptr: ptr, val: value) -> () { + sb ptr val i0 + } + v666v1 = const unit () + ret () v666v1 +} + + +fn raw_ptr_write_61(ptr: ptr, value: u64) -> () { + entry(ptr: ptr, value: u64): + v670v1 = asm(ptr: ptr, val: value) -> () { + sw ptr val i0 + } + v671v1 = const unit () + ret () v671v1 +} + + +fn raw_ptr_write_62(ptr: ptr, value: __ptr { bool, u64 }) -> () { + local { bool, u64 } val_ + + entry(ptr: ptr, value: __ptr { bool, u64 }): + v675v1 = get_local __ptr { bool, u64 }, val_ + mem_copy_val v675v1, value + v677v1 = get_local __ptr { bool, u64 }, val_ + v678v1 = const u64 16 + v679v1 = asm(dst: ptr, src: v677v1, count: v678v1) -> () { + mcp dst src count + } + v680v1 = const unit () + ret () v680v1 +} + + +pshh i524288 ; [fn init: raw_ptr_write_55]: push used high registers 40..64 +sb $$arg0 $$arg1 i0 ; sb ptr val i0 +poph i524288 ; [fn end: raw_ptr_write_55]: restore used high registers 40..64 +jal $zero $$reta i0 ; [fn end: raw_ptr_write_55] return from call + +pshh i524288 ; [fn init: raw_ptr_write_61]: push used high registers 40..64 +sw $$arg0 $$arg1 i0 ; sw ptr val i0 +poph i524288 ; [fn end: raw_ptr_write_61]: restore used high registers 40..64 +jal $zero $$reta i0 ; [fn end: raw_ptr_write_61] return from call + + + +pshh i528384 ; [fn init: raw_ptr_write_62]: push used high registers 40..64 +move $$locbase $sp ; [fn init: raw_ptr_write_62]: set locals base register +cfei i16 ; [fn init: raw_ptr_write_62]: allocate: locals 16 byte(s), call args 0 slot(s) +mcpi $$locbase $$arg1 i16 ; copy memory +movi $r0 i16 ; initialize constant into register +mcp $$arg0 $$locbase $r0 ; mcp dst src count +cfsi i16 ; [fn end: raw_ptr_write_62] free: locals 16 byte(s), call args 0 slot(s) +poph i528384 ; [fn end: raw_ptr_write_62]: restore used high registers 40..64 +jal $zero $$reta i0 ; [fn end: raw_ptr_write_62] return from call From e512c1410a9b87d5fd3ca0db29a0b575f3bb373c Mon Sep 17 00:00:00 2001 From: xunilrj Date: Fri, 5 Jun 2026 18:40:10 -0300 Subject: [PATCH 06/42] avoid infinite loop on local_copy_prop --- justfile | 23 ++++++++++++++++++++++- scripts/perf/perf-diff-latest.sh | 20 +++++++++++++++++--- sway-ir/src/optimize/memcpyopt.rs | 2 +- 3 files changed, 40 insertions(+), 5 deletions(-) diff --git a/justfile b/justfile index 52d4760032e..2ade41de50a 100644 --- a/justfile +++ b/justfile @@ -40,6 +40,27 @@ benchmark-tests: # The `performance` group contains recipes related to benchmarking the performance of compiled code: # gas usages and bytecode sizes. +CURRENT_BRANCH := `git branch --show-current` + +pe2e-against-master: + echo "Performance: {{CURRENT_BRANCH}} vs master" + git clean -xfd test/perf_out + git checkout master + cargo r -p test --release -- XX # update reduced std-libs + just pa + git checkout {{CURRENT_BRANCH}} + cargo r -p test --release -- XX # update reduced std-libs + just pa + just pdl + echo "performance reports at ./test/perf_out" + +pe2e-o2-against-master: + echo "Performance: {{CURRENT_BRANCH}} vs master" + git checkout master + cd ../sway-program-collection && git clean -xfd && just a + git checkout {{CURRENT_BRANCH}} + cd ../sway-program-collection && git clean -xfd && just a && just opd + alias pe2e := perf-e2e # collect gas usages and bytecode sizes from E2E tests [group('performance')] @@ -103,7 +124,7 @@ perf-diff-latest format='md': # format: output format, either `csv` or `html` (default: `csv`) # open: for `html` output, `-o` opens the report in the default browser -alias psh := perf-snapshot-historical +#alias psh := perf-snapshot-historical # collect historic gas usages from a snapshot test that has a `forc test` output [linux] [macos] diff --git a/scripts/perf/perf-diff-latest.sh b/scripts/perf/perf-diff-latest.sh index 212766a2d6e..1bfa0bc048c 100755 --- a/scripts/perf/perf-diff-latest.sh +++ b/scripts/perf/perf-diff-latest.sh @@ -12,6 +12,14 @@ perf_diff_stats_script="./scripts/perf/perf-diff-stats.sh" categories=("e2e-gas-usages" "e2e-bytecode-sizes" "in-language-gas-usages" "in-language-bytecode-sizes") + +# macOS compatibility: gfind from `brew install findutils` +if [ -x "$(command -v gfind)" ]; then + find="gfind" +else + find="find" +fi + err() { echo "ERROR: $*" >&2 exit 1 @@ -28,8 +36,11 @@ process_category() { local category="$1" # Collect candidates: "*--*.csv", but skip "--historical-*.csv". - mapfile -t candidates < <( - find "$perf_out_dir" -maxdepth 1 -type f -name "*-${category}-*.csv" -printf "%p\n" 2>/dev/null | + candidates=() + while IFS= read -r line; do + candidates+=("$line") + done < <( + $find "$perf_out_dir" -maxdepth 1 -type f -name "*-${category}-*.csv" -printf "%p\n" 2>/dev/null | while IFS= read -r f; do base="$(basename -- "$f")" @@ -50,7 +61,10 @@ process_category() { fi # Sort by timestamp (asc) and take last two paths. - mapfile -t sorted_paths < <( + sorted_paths=() + while IFS= read -r line; do + sorted_paths+=("$line") + done < <( printf "%s\n" "${candidates[@]}" | sort -n -k1,1 | awk -F'\t' '{print $2}' | diff --git a/sway-ir/src/optimize/memcpyopt.rs b/sway-ir/src/optimize/memcpyopt.rs index 2c834221504..fd3a2527d69 100644 --- a/sway-ir/src/optimize/memcpyopt.rs +++ b/sway-ir/src/optimize/memcpyopt.rs @@ -563,7 +563,7 @@ fn local_copy_prop( // optimization possible. We could track just the changes and do it // all in one go, but that would complicate the algorithm. So I've // marked this as a TODO for now (#4600). - loop { + for _ in 0..100 { available_copies = FxHashSet::default(); src_to_copies = IndexMap::default(); dest_to_copies = IndexMap::default(); From b66dedaf9fb342271482882c8c51e23b115a9d17 Mon Sep 17 00:00:00 2001 From: xunilrj Date: Fri, 5 Jun 2026 18:51:26 -0300 Subject: [PATCH 07/42] fix justfile --- justfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/justfile b/justfile index 2ade41de50a..10d20cc960c 100644 --- a/justfile +++ b/justfile @@ -59,7 +59,7 @@ pe2e-o2-against-master: git checkout master cd ../sway-program-collection && git clean -xfd && just a git checkout {{CURRENT_BRANCH}} - cd ../sway-program-collection && git clean -xfd && just a && just opd + cd ../sway-program-collection && just a && just opd alias pe2e := perf-e2e # collect gas usages and bytecode sizes from E2E tests From fc12a285b419e705c220d8306c30d9e7c397f7ce Mon Sep 17 00:00:00 2001 From: xunilrj Date: Fri, 5 Jun 2026 19:08:30 -0300 Subject: [PATCH 08/42] fmt and clippy issues --- sway-ir/src/pass_manager.rs | 2 +- sway-ir/tests/tests.rs | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/sway-ir/src/pass_manager.rs b/sway-ir/src/pass_manager.rs index 40578e78286..f3cdf5a2545 100644 --- a/sway-ir/src/pass_manager.rs +++ b/sway-ir/src/pass_manager.rs @@ -372,7 +372,7 @@ impl PassManager { let mut modified = false; for pass in passes.iter() { - modified |= self.actually_run(ir, *pass)?; + modified |= self.actually_run(ir, pass)?; } if !modified { diff --git a/sway-ir/tests/tests.rs b/sway-ir/tests/tests.rs index 0d0f436e996..42355bed635 100644 --- a/sway-ir/tests/tests.rs +++ b/sway-ir/tests/tests.rs @@ -296,11 +296,17 @@ fn inline() { if params.contains(&"all") { // Just inline everything, replacing all CALL instructions. +<<<<<<< HEAD let mut changed = false; for func in funcs.into_iter() { changed |= opt::inline_all_function_calls(ir, &func).unwrap(); } changed +======= + funcs + .into_iter() + .any(|func| opt::inline_all_function_calls(ir, &func).unwrap()) +>>>>>>> 3de9fb411 (fmt and clippy issues) } else { // Get the parameters from the first line. See the inline/README.md for details. If // there aren't any found then there won't be any constraints and it'll be the From 238481fd81c24f709b21118c35e17e3f11b9ca6c Mon Sep 17 00:00:00 2001 From: xunilrj Date: Mon, 8 Jun 2026 13:35:32 -0300 Subject: [PATCH 09/42] new inline threshold --- sway-ir/src/optimize/inline.rs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/sway-ir/src/optimize/inline.rs b/sway-ir/src/optimize/inline.rs index 7433b03e845..5a5c5c365b9 100644 --- a/sway-ir/src/optimize/inline.rs +++ b/sway-ir/src/optimize/inline.rs @@ -97,6 +97,8 @@ pub fn fn_inline( counts }); + const MAX_CALEE_INSTRUCTION_COUNT_TO_INLINE: usize = 12; + const MAX_CALLS_COUNT_TO_INLINE: u64 = 2; let inline_heuristic = |ctx: &Context, func: &Function, _call_site: &Value| { // The encoding code in the `__entry` functions contains pointer patterns that mark // escape analysis and referred symbols as incomplete. This effectively forbids optimizations @@ -118,14 +120,14 @@ pub fn fn_inline( None => {} } - // If the function is called only once then definitely inline it. - if call_counts.get(func).copied().unwrap_or(0) == 1 { + // If the function is called less than the threshold, inline it. + if call_counts.get(func).copied().unwrap_or(0) <= MAX_CALLS_COUNT_TO_INLINE { return true; } // If the function is (still) small then also inline it. - const MAX_INLINE_INSTRS_COUNT: usize = 12; - if func.num_instructions_incl_asm_instructions(ctx) <= MAX_INLINE_INSTRS_COUNT { + if func.num_instructions_incl_asm_instructions(ctx) <= MAX_CALEE_INSTRUCTION_COUNT_TO_INLINE + { return true; } From 9ccf15de15cc65eee9327e66cebd5604c96e48ea Mon Sep 17 00:00:00 2001 From: xunilrj Date: Mon, 8 Jun 2026 13:56:18 -0300 Subject: [PATCH 10/42] do not inline with asm blocks --- sway-ir/src/optimize/inline.rs | 36 ++++++++++++++++++++++++---------- 1 file changed, 26 insertions(+), 10 deletions(-) diff --git a/sway-ir/src/optimize/inline.rs b/sway-ir/src/optimize/inline.rs index 5a5c5c365b9..8dae472e1cf 100644 --- a/sway-ir/src/optimize/inline.rs +++ b/sway-ir/src/optimize/inline.rs @@ -84,7 +84,7 @@ pub fn fn_inline( .fold(HashMap::new(), |mut counts, func| { for (_block, ins) in func.instruction_iter(context) { if let Some(Instruction { - op: InstOp::Call(callee, _args), + op: InstOp::Call(callee, _), .. }) = ins.get_instruction(context) { @@ -98,7 +98,7 @@ pub fn fn_inline( }); const MAX_CALEE_INSTRUCTION_COUNT_TO_INLINE: usize = 12; - const MAX_CALLS_COUNT_TO_INLINE: u64 = 2; + const MAX_CALLS_COUNT_TO_INLINE: u64 = 1; let inline_heuristic = |ctx: &Context, func: &Function, _call_site: &Value| { // The encoding code in the `__entry` functions contains pointer patterns that mark // escape analysis and referred symbols as incomplete. This effectively forbids optimizations @@ -120,6 +120,21 @@ pub fn fn_inline( None => {} } + // We do not deal very well with asm blocks, so avoid inlining functions with it + let has_asm_block = + func.instruction_iter(context) + .any(|(_, v)| match v.get_instruction(context) { + Some(Instruction { + op: InstOp::AsmBlock(..), + .. + }) => true, + _ => false, + }); + + if has_asm_block { + return false; + } + // If the function is called less than the threshold, inline it. if call_counts.get(func).copied().unwrap_or(0) <= MAX_CALLS_COUNT_TO_INLINE { return true; @@ -142,6 +157,7 @@ pub fn fn_inline( for function in functions { modified |= inline_some_function_calls(context, &function, inline_heuristic)?; } + Ok(modified) } @@ -164,10 +180,10 @@ pub fn inline_all_function_calls( /// - The number of calls made to the function or if the function is called inside a loop. /// - A particular call has constant arguments implying further constant folding. /// - An attribute request, e.g., #[always_inline], #[never_inline]. -pub fn inline_some_function_calls bool>( +pub fn inline_some_function_calls( context: &mut Context, function: &Function, - predicate: F, + predicate: impl Fn(&Context, &Function, &Value) -> bool, ) -> Result { // Find call sites which passes the predicate. // We use a RefCell so that the inliner can modify the value @@ -176,11 +192,11 @@ pub fn inline_some_function_calls bool>( .instruction_iter(context) .filter_map(|(block, call_val)| match context.values[call_val.0].value { ValueDatum::Instruction(Instruction { - op: InstOp::Call(inlined_function, _), + op: InstOp::Call(candidate_function, _), .. - }) => predicate(context, &inlined_function, &call_val).then_some(( + }) => predicate(context, &candidate_function, &call_val).then_some(( call_val, - (call_val, RefCell::new((block, inlined_function))), + (call_val, RefCell::new((block, candidate_function))), )), _ => None, }) @@ -188,9 +204,9 @@ pub fn inline_some_function_calls bool>( for call_site in &call_sites { let call_site_in = call_data.get(call_site).unwrap(); - let (block, inlined_function) = *call_site_in.borrow(); + let (block, being_inlined) = *call_site_in.borrow(); - if function == &inlined_function { + if function == &being_inlined { // We can't inline a function into itself. continue; } @@ -200,7 +216,7 @@ pub fn inline_some_function_calls bool>( *function, block, *call_site, - inlined_function, + being_inlined, &call_data, )?; } From 287425d92137a712551fc252e32e34b13af224e9 Mon Sep 17 00:00:00 2001 From: xunilrj Date: Tue, 9 Jun 2026 21:32:04 -0300 Subject: [PATCH 11/42] increase inlining threshold on call sites inside loops --- Cargo.lock | 1 + sway-ir/Cargo.toml | 1 + sway-ir/src/analysis.rs | 2 + sway-ir/src/analysis/dominator.rs | 183 ++++++++++-------- sway-ir/src/optimize/inline.rs | 81 +++++--- sway-ir/src/pass_manager.rs | 18 +- .../language/for_loops/src/main.sw | 20 +- .../language/while_loops/src/main.sw | 26 ++- 8 files changed, 207 insertions(+), 125 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b62706bfd59..4d3feb6c507 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -7653,6 +7653,7 @@ version = "0.71.2" dependencies = [ "anyhow", "downcast-rs", + "expect-test", "filecheck", "indexmap 2.14.0", "insta", diff --git a/sway-ir/Cargo.toml b/sway-ir/Cargo.toml index 7f2982d262f..7dac3b8b234 100644 --- a/sway-ir/Cargo.toml +++ b/sway-ir/Cargo.toml @@ -26,6 +26,7 @@ sway-types.workspace = true sway-utils.workspace = true [dev-dependencies] +expect-test.workspace = true insta.workspace = true vte.workspace = true diff --git a/sway-ir/src/analysis.rs b/sway-ir/src/analysis.rs index 47ff44f2d51..7244214290f 100644 --- a/sway-ir/src/analysis.rs +++ b/sway-ir/src/analysis.rs @@ -4,3 +4,5 @@ pub mod dominator; pub use dominator::*; pub mod memory_utils; pub use memory_utils::*; +pub mod loop_analysis; +pub use loop_analysis::*; diff --git a/sway-ir/src/analysis/dominator.rs b/sway-ir/src/analysis/dominator.rs index 4d65b53f4d3..16b921fc068 100644 --- a/sway-ir/src/analysis/dominator.rs +++ b/sway-ir/src/analysis/dominator.rs @@ -1,6 +1,6 @@ use crate::{ - block::Block, AnalysisResult, AnalysisResultT, AnalysisResults, BranchToWithArgs, Context, - Function, IrError, Pass, PassMutability, ScopedPass, Value, + block::Block, AnalysisResult, AnalysisResultT, AnalysisResults, Context, Function, IrError, + Pass, PassMutability, ScopedPass, Value, }; use indexmap::IndexSet; /// Dominator tree and related algorithms. @@ -43,6 +43,15 @@ pub struct PostOrder { } impl AnalysisResultT for PostOrder {} +impl PostOrder { + /// If `block` was found by the `PostOrder` analysis, + /// so it is reachable from the entry function. + #[inline(always)] + pub fn is_reachable(&self, block: &Block) -> bool { + self.block_to_po.contains_key(block) + } +} + pub const POSTORDER_NAME: &str = "postorder"; pub fn create_postorder_pass() -> Pass { @@ -62,42 +71,44 @@ pub fn compute_post_order_pass( Ok(Box::new(compute_post_order(context, &function))) } +fn post_order( + context: &Context, + block: Block, + result: &mut PostOrder, + visited: &mut FxHashSet, + counter: &mut usize, +) { + if !visited.insert(block) { + return; + } + + for successor in block.successors(context) { + post_order(context, successor.block, result, visited, counter); + } + + result.block_to_po.insert(block, *counter); + result.po_to_block.push(block); + *counter += 1; +} + /// Compute the post-order traversal of the CFG. /// /// **BEWARE: Unreachable blocks aren't part of the result.** pub fn compute_post_order(context: &Context, function: &Function) -> PostOrder { - let mut res = PostOrder { + let mut result = PostOrder { block_to_po: FxHashMap::default(), po_to_block: Vec::default(), }; - let entry = function.get_entry_block(context); let mut counter = 0; - let mut on_stack = FxHashSet::::default(); - fn post_order( - context: &Context, - n: Block, - res: &mut PostOrder, - on_stack: &mut FxHashSet, - counter: &mut usize, - ) { - if on_stack.contains(&n) { - return; - } - on_stack.insert(n); - for BranchToWithArgs { block: n_succ, .. } in n.successors(context) { - post_order(context, n_succ, res, on_stack, counter); - } - res.block_to_po.insert(n, *counter); - res.po_to_block.push(n); - *counter += 1; - } - post_order(context, entry, &mut res, &mut on_stack, &mut counter); + let mut visited = FxHashSet::::default(); + let entry = function.get_entry_block(context); + post_order(context, entry, &mut result, &mut visited, &mut counter); // We could assert the whole thing, but it'd be expensive. - assert!(res.po_to_block.last().unwrap() == &entry); + assert!(result.po_to_block.last().unwrap() == &entry); - res + result } pub const DOMINATORS_NAME: &str = "dominators"; @@ -107,56 +118,96 @@ pub fn create_dominators_pass() -> Pass { name: DOMINATORS_NAME, descr: "Dominator tree computation", deps: vec![POSTORDER_NAME], - runner: ScopedPass::FunctionPass(PassMutability::Analysis(compute_dom_tree)), + runner: ScopedPass::FunctionPass(PassMutability::Analysis(compute_dom_tree_pass)), } } +// Find the nearest common dominator of two blocks, +// using the partially computed dominator tree. +fn nearest_common_dominator_of_two_blocks( + po: &PostOrder, + dom_tree: &FxIndexMap, + mut block_a: Block, + mut block_b: Block, +) -> Block { + while block_a != block_b { + while po.block_to_po[&block_a] < po.block_to_po[&block_b] { + block_a = dom_tree[&block_a].parent.unwrap(); + } + while po.block_to_po[&block_b] < po.block_to_po[&block_a] { + block_b = dom_tree[&block_b].parent.unwrap(); + } + } + block_a +} + /// Compute the dominator tree for the CFG. -fn compute_dom_tree( +fn compute_dom_tree_pass( context: &Context, analyses: &AnalysisResults, function: Function, ) -> Result { let po: &PostOrder = analyses.get_analysis_result(function); - let mut dom_tree = DomTree::default(); - let entry = function.get_entry_block(context); + let domtree = compute_dom_tree(context, function, po)?; + Ok(Box::new(domtree)) +} + +pub(crate) fn compute_dom_tree( + context: &Context<'_>, + function: Function, + po: &PostOrder, +) -> Result { + let mut dom_tree = FxIndexMap::default(); // This is to make the algorithm happy. It'll be changed to None later. - dom_tree.0.insert(entry, DomTreeNode::new(Some(entry))); + let entry = function.get_entry_block(context); + dom_tree.insert(entry, DomTreeNode::new(Some(entry))); + // initialize the dominators tree. This allows us to do dom_tree[b] fearlessly. // Note that we just previously initialized "entry", so we skip that here. - for b in po.po_to_block.iter().take(po.po_to_block.len() - 1) { - dom_tree.0.insert(*b, DomTreeNode::new(None)); + for block in po.po_to_block.iter().take(po.po_to_block.len() - 1) { + dom_tree.insert(*block, DomTreeNode::new(None)); } + let mut changed = true; while changed { changed = false; + // For all nodes, b, in reverse postorder (except start node) - for b in po.po_to_block.iter().rev().skip(1) { - // new_idom <- first (processed) predecessor of b (pick one) - let mut new_idom = b + for block in po.po_to_block.iter().rev().skip(1) { + let current_block_po = po.block_to_po[block]; + + // new_idom <- first (processed) predecessor of `block` (pick one) + let mut new_idom = block .pred_iter(context) - .find(|p| { - // "p" may not be reachable, and hence not in dom_tree. - po.block_to_po - .get(p) - .is_some_and(|p_po| *p_po > po.block_to_po[b]) + .find(|pred| { + // "pred" may not be reachable, and hence not in the cfg. + let Some(pred_po) = po.block_to_po.get(pred) else { + return false; + }; + *pred_po > current_block_po }) .cloned() .unwrap(); + let picked_pred = new_idom; - // for all other (reachable) predecessors, p, of b: - for p in b + + // for all other (reachable) predecessors, `pred` of `block`: + // if doms[pred] already calculated + // then new_idom is the common dominator of both + for pred in block .pred_iter(context) - .filter(|p| **p != picked_pred && po.block_to_po.contains_key(p)) + .filter(|p| **p != picked_pred && po.is_reachable(p)) { - if dom_tree.0[p].parent.is_some() { - // if doms[p] already calculated - new_idom = intersect(po, &dom_tree, *p, new_idom); + if dom_tree[pred].parent.is_some() { + new_idom = + nearest_common_dominator_of_two_blocks(po, &dom_tree, *pred, new_idom); } } - let b_node = dom_tree.0.get_mut(b).unwrap(); + + // update doms[block] if needed + let b_node = dom_tree.get_mut(block).unwrap(); match b_node.parent { Some(idom) if idom == new_idom => {} _ => { @@ -167,38 +218,18 @@ fn compute_dom_tree( } } - // Find the nearest common dominator of two blocks, - // using the partially computed dominator tree. - fn intersect( - po: &PostOrder, - dom_tree: &DomTree, - mut finger1: Block, - mut finger2: Block, - ) -> Block { - while finger1 != finger2 { - while po.block_to_po[&finger1] < po.block_to_po[&finger2] { - finger1 = dom_tree.0[&finger1].parent.unwrap(); - } - while po.block_to_po[&finger2] < po.block_to_po[&finger1] { - finger2 = dom_tree.0[&finger2].parent.unwrap(); - } - } - finger1 - } - // Fix the root. - dom_tree.0.get_mut(&entry).unwrap().parent = None; + dom_tree.get_mut(&entry).unwrap().parent = None; + // Build the children. - let child_parent: Vec<_> = dom_tree - .0 - .iter() - .filter_map(|(n, n_node)| n_node.parent.map(|n_parent| (*n, n_parent))) - .collect(); - for (child, parent) in child_parent { - dom_tree.0.get_mut(&parent).unwrap().children.push(child); + for block in po.po_to_block.iter() { + let Some(parent) = dom_tree[block].parent else { + continue; + }; + dom_tree[&parent].children.push(*block); } - Ok(Box::new(dom_tree)) + Ok(DomTree(dom_tree)) } impl DomTree { diff --git a/sway-ir/src/optimize/inline.rs b/sway-ir/src/optimize/inline.rs index 8dae472e1cf..024cdf158b3 100644 --- a/sway-ir/src/optimize/inline.rs +++ b/sway-ir/src/optimize/inline.rs @@ -18,7 +18,8 @@ use crate::{ metadata::{combine, MetadataIndex}, value::{Value, ValueContent, ValueDatum}, variable::LocalVar, - AnalysisResults, BlockArgument, Instruction, Module, Pass, PassMutability, ScopedPass, + AnalysisResults, BlockArgument, DebugWithContext, Instruction, LoopAnalysis, Module, Pass, + PassMutability, ScopedPass, LOOP_ANALYSIS_NAME, }; pub const FN_INLINE_NAME: &str = "inline"; @@ -27,7 +28,7 @@ pub fn create_fn_inline_pass() -> Pass { Pass { name: FN_INLINE_NAME, descr: "Function inlining", - deps: vec![], + deps: vec![LOOP_ANALYSIS_NAME], runner: ScopedPass::ModulePass(PassMutability::Transform(fn_inline)), } } @@ -74,7 +75,7 @@ pub fn metadata_to_inline(context: &Context, md_idx: Option) -> O pub fn fn_inline( context: &mut Context, - _: &AnalysisResults, + analyses: &AnalysisResults, module: Module, ) -> Result { // Inspect ALL calls and count how often each function is called. @@ -97,9 +98,9 @@ pub fn fn_inline( counts }); - const MAX_CALEE_INSTRUCTION_COUNT_TO_INLINE: usize = 12; + const MAX_CALLEE_INSTRUCTION_COUNT_TO_INLINE: usize = 12; const MAX_CALLS_COUNT_TO_INLINE: u64 = 1; - let inline_heuristic = |ctx: &Context, func: &Function, _call_site: &Value| { + let inline_heuristic = |ctx: &Context, func: &Function, call_site: &Value| { // The encoding code in the `__entry` functions contains pointer patterns that mark // escape analysis and referred symbols as incomplete. This effectively forbids optimizations // like SROA nad DCE. If we inline original entries, like e.g., `main`, the code in them will @@ -121,28 +122,38 @@ pub fn fn_inline( } // We do not deal very well with asm blocks, so avoid inlining functions with it - let has_asm_block = - func.instruction_iter(context) - .any(|(_, v)| match v.get_instruction(context) { - Some(Instruction { - op: InstOp::AsmBlock(..), - .. - }) => true, - _ => false, - }); - - if has_asm_block { - return false; - } + // let has_asm_block = func + // .instruction_iter(ctx) + // .any(|(_, v)| match v.get_instruction(ctx) { + // Some(Instruction { + // op: InstOp::AsmBlock(..), + // .. + // }) => true, + // _ => false, + // }); + + // if has_asm_block { + // return false; + // } // If the function is called less than the threshold, inline it. if call_counts.get(func).copied().unwrap_or(0) <= MAX_CALLS_COUNT_TO_INLINE { return true; } + let mut threshold = MAX_CALLEE_INSTRUCTION_COUNT_TO_INLINE; + + // If call site is inside loops, increase the threshold + let call_site_fn = call_site.get_parent_function(ctx).unwrap(); + let la: &LoopAnalysis = analyses.get_analysis_result(call_site_fn); + if let Some(block) = call_site.get_parent_block(ctx) { + if la.is_inside_loop(&block) { + threshold *= 2; + } + } + // If the function is (still) small then also inline it. - if func.num_instructions_incl_asm_instructions(ctx) <= MAX_CALEE_INSTRUCTION_COUNT_TO_INLINE - { + if func.num_instructions_incl_asm_instructions(ctx) <= threshold { return true; } @@ -183,23 +194,31 @@ pub fn inline_all_function_calls( pub fn inline_some_function_calls( context: &mut Context, function: &Function, - predicate: impl Fn(&Context, &Function, &Value) -> bool, + should_inline: impl Fn(&Context, &Function, &Value) -> bool, ) -> Result { // Find call sites which passes the predicate. // We use a RefCell so that the inliner can modify the value // when it moves other instructions (which could be in call_date) after an inline. let (call_sites, call_data): (Vec<_>, FxHashMap<_, _>) = function .instruction_iter(context) - .filter_map(|(block, call_val)| match context.values[call_val.0].value { - ValueDatum::Instruction(Instruction { - op: InstOp::Call(candidate_function, _), - .. - }) => predicate(context, &candidate_function, &call_val).then_some(( - call_val, - (call_val, RefCell::new((block, candidate_function))), - )), - _ => None, - }) + .filter_map( + |(block, call_site)| match context.values[call_site.0].value { + ValueDatum::Instruction(Instruction { + op: InstOp::Call(candidate_function, _), + .. + }) => { + if should_inline(context, &candidate_function, &call_site) { + Some(( + call_site, + (call_site, RefCell::new((block, candidate_function))), + )) + } else { + None + } + } + _ => None, + }, + ) .unzip(); for call_site in &call_sites { diff --git a/sway-ir/src/pass_manager.rs b/sway-ir/src/pass_manager.rs index f3cdf5a2545..5cd401e112a 100644 --- a/sway-ir/src/pass_manager.rs +++ b/sway-ir/src/pass_manager.rs @@ -4,14 +4,15 @@ use crate::{ create_dom_fronts_pass, create_dominators_pass, create_escaped_symbols_pass, create_fn_dedup_debug_profile_pass, create_fn_dedup_release_profile_pass, create_fn_inline_pass, create_globals_dce_pass, create_init_aggr_lowering_pass, - create_mem2reg_pass, create_memcpyopt_pass, create_memcpyprop_reverse_pass, - create_misc_demotion_pass, create_module_printer_pass, create_module_verifier_pass, - create_postorder_pass, create_ret_demotion_pass, create_simplify_cfg_pass, create_sroa_pass, - Context, Function, IrError, Module, ARG_DEMOTION_NAME, ARG_POINTEE_MUTABILITY_TAGGER_NAME, - CCP_NAME, CONST_DEMOTION_NAME, CONST_FOLDING_NAME, CSE_NAME, DCE_NAME, - FN_DEDUP_DEBUG_PROFILE_NAME, FN_DEDUP_RELEASE_PROFILE_NAME, FN_INLINE_NAME, GLOBALS_DCE_NAME, - INIT_AGGR_LOWERING_NAME, MEM2REG_NAME, MEMCPYOPT_NAME, MEMCPYPROP_REVERSE_NAME, - MISC_DEMOTION_NAME, RET_DEMOTION_NAME, SIMPLIFY_CFG_NAME, SROA_NAME, + create_loop_analysis_pass, create_mem2reg_pass, create_memcpyopt_pass, + create_memcpyprop_reverse_pass, create_misc_demotion_pass, create_module_printer_pass, + create_module_verifier_pass, create_postorder_pass, create_ret_demotion_pass, + create_simplify_cfg_pass, create_sroa_pass, Context, Function, IrError, Module, + ARG_DEMOTION_NAME, ARG_POINTEE_MUTABILITY_TAGGER_NAME, CCP_NAME, CONST_DEMOTION_NAME, + CONST_FOLDING_NAME, CSE_NAME, DCE_NAME, FN_DEDUP_DEBUG_PROFILE_NAME, + FN_DEDUP_RELEASE_PROFILE_NAME, FN_INLINE_NAME, GLOBALS_DCE_NAME, INIT_AGGR_LOWERING_NAME, + MEM2REG_NAME, MEMCPYOPT_NAME, MEMCPYPROP_REVERSE_NAME, MISC_DEMOTION_NAME, RET_DEMOTION_NAME, + SIMPLIFY_CFG_NAME, SROA_NAME, }; use downcast_rs::{impl_downcast, Downcast}; use rustc_hash::FxHashMap; @@ -550,6 +551,7 @@ pub fn register_known_passes(pm: &mut PassManager) { pm.register(create_escaped_symbols_pass()); pm.register(create_module_printer_pass()); pm.register(create_module_verifier_pass()); + pm.register(create_loop_analysis_pass()); // Lowering passes. pm.register(create_init_aggr_lowering_pass()); diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/for_loops/src/main.sw b/test/src/e2e_vm_tests/test_programs/should_pass/language/for_loops/src/main.sw index 3b738c5c2a5..ab14fc1cc5b 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/for_loops/src/main.sw +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/for_loops/src/main.sw @@ -1,22 +1,24 @@ script; +#[inline(never)] +fn just_for_loop(vector: Vec) { + let mut i = 0; + for n in vector.iter() { + assert(n == i); + i += 1; + } + assert(i == 5); +} + fn test_simple_for() { let mut vector = Vec::new(); - vector.push(0); vector.push(1); vector.push(2); vector.push(3); vector.push(4); - let mut i = 0; - - for n in vector.iter() { - assert(n == i); - i += 1; - } - - assert(i == 5); + just_for_loop(vector); } fn test_for_pattern_tuple() { diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/while_loops/src/main.sw b/test/src/e2e_vm_tests/test_programs/should_pass/language/while_loops/src/main.sw index adb7cf187ae..2f27b457b94 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/while_loops/src/main.sw +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/while_loops/src/main.sw @@ -1,12 +1,18 @@ script; -fn main() -> bool { +#[inline(never)] +fn simple_while() { let mut counter = 0; // test standard while loop: while counter < 10 { counter = counter + 1; } assert(counter == 10); +} + +fn main() -> bool { + simple_while(); + call_too_big_to_be_inlined_three_times(); // test early exit from loop with manual "break" (by invalidating the condition): let mut counter_2 = 0; @@ -41,3 +47,21 @@ fn main() -> bool { true } + +fn too_big_to_be_inlined() { + assert(1 == 1); + assert(1 == 1); +} + +// The call inside the loop will be inlined. +#[inline(never)] +fn call_too_big_to_be_inlined_three_times() { + too_big_to_be_inlined(); + too_big_to_be_inlined(); + + let mut counter = 0; + while counter < 10 { + counter = counter + 1; + too_big_to_be_inlined(); + } +} From 3aa8d9993d2255b5a9dbb2b28199a40b3483192f Mon Sep 17 00:00:00 2001 From: xunilrj Date: Tue, 9 Jun 2026 21:32:10 -0300 Subject: [PATCH 12/42] increase inlining threshold on call sites inside loops --- sway-ir/src/analysis/loop_analysis.rs | 405 ++++++++++++++++++ .../language/for_loops/snapshot.toml | 3 + .../language/for_loops/stdout.snap | 154 +++++++ .../language/while_loops/snapshot.toml | 3 + .../language/while_loops/stdout.snap | 159 +++++++ 5 files changed, 724 insertions(+) create mode 100644 sway-ir/src/analysis/loop_analysis.rs create mode 100644 test/src/e2e_vm_tests/test_programs/should_pass/language/for_loops/snapshot.toml create mode 100644 test/src/e2e_vm_tests/test_programs/should_pass/language/for_loops/stdout.snap create mode 100644 test/src/e2e_vm_tests/test_programs/should_pass/language/while_loops/snapshot.toml create mode 100644 test/src/e2e_vm_tests/test_programs/should_pass/language/while_loops/stdout.snap diff --git a/sway-ir/src/analysis/loop_analysis.rs b/sway-ir/src/analysis/loop_analysis.rs new file mode 100644 index 00000000000..236dde848c9 --- /dev/null +++ b/sway-ir/src/analysis/loop_analysis.rs @@ -0,0 +1,405 @@ +use std::collections::{HashMap, HashSet}; + +use crate::{ + AnalysisResult, AnalysisResultT, AnalysisResults, Block, Context, DebugWithContext, DomTree, + Function, IrError, Pass, PassMutability, PostOrder, ScopedPass, DOMINATORS_NAME, + POSTORDER_NAME, +}; + +pub const LOOP_ANALYSIS_NAME: &str = "loop analysis"; + +pub fn create_loop_analysis_pass() -> Pass { + Pass { + name: LOOP_ANALYSIS_NAME, + descr: "Loop analysis computation", + deps: vec![POSTORDER_NAME, DOMINATORS_NAME], + runner: ScopedPass::FunctionPass(PassMutability::Analysis(compute_loop_analysis_pass)), + } +} + +#[derive(Debug)] +pub struct Loop { + blocks: HashSet, +} + +pub struct LoopAnalysis { + loops: Vec, + block_to_loops: HashMap>, +} + +impl LoopAnalysis { + pub fn is_inside_loop(&self, block: &Block) -> bool { + self.block_to_loops + .get(block) + .map(|b| !b.is_empty()) + .unwrap_or_default() + } +} + +impl DebugWithContext for LoopAnalysis { + fn fmt_with_context(&self, f: &mut std::fmt::Formatter, context: &Context) -> std::fmt::Result { + let mut block_to_loops = HashMap::new(); + for (block, loops) in self.block_to_loops.iter() { + block_to_loops.insert(block.get_label(context), loops); + } + + let mut loops = HashMap::new(); + for (idx, l) in self.loops.iter().enumerate() { + let blocks = l + .blocks + .iter() + .map(|x| x.get_label(context)) + .collect::>(); + loops.insert(idx, blocks); + } + + f.debug_struct("LoopAnalysis") + .field("block_to_loops", &block_to_loops) + .field("loops", &loops) + .finish() + } +} + +impl AnalysisResultT for LoopAnalysis {} + +/// Compute if instructions are inside of loops or not +fn compute_loop_analysis_pass( + context: &Context, + analyses: &AnalysisResults, + function: Function, +) -> Result { + let dom_tree: &DomTree = analyses.get_analysis_result(function); + let po: &PostOrder = analyses.get_analysis_result(function); + + let result = compute_loop_analysis(context, dom_tree, po)?; + + Ok(Box::new(result)) +} + +fn compute_loop_analysis( + context: &Context<'_>, + dom_tree: &DomTree, + po: &PostOrder, +) -> Result { + // 2. **Find all Back-edges**: + // Iterate through every edge $(U, V)$ in the CFG. + // If $V$ is an ancestor of $U$ in the Dominator Tree, $(U, V)$ is a back-edge. + let mut back_edges = vec![]; + + for block in po.po_to_block.iter() { + for branch in block.successors(context) { + let sucessor = branch.block; + if dom_tree.dominates(sucessor, *block) { + back_edges.push((*block, sucessor)); + } + } + } + + let mut block_to_loops = HashMap::>::new(); + + // 3. **Map Blocks to Loops** + // For every back-edge $(U, V)$, find all blocks that can reach $U$ without passing through $V$. + // Mark these blocks as "part of a loop." + let mut loops = vec![]; + + for (loop_tail, loop_header) in back_edges { + let mut loop_blocks = HashSet::new(); + let mut q = vec![loop_tail]; + while let Some(block) = q.pop() { + if !loop_blocks.insert(block) { + continue; + } + + if block == loop_header { + continue; + } + + q.extend(block.pred_iter(context)); + } + + assert!(loop_blocks.contains(&loop_tail)); + assert!(loop_blocks.contains(&loop_header)); + + // Map blocks to loops + let loop_id = loops.len(); + + for block in loop_blocks.iter() { + block_to_loops.entry(*block).or_default().push(loop_id); + } + + loops.push(Loop { + blocks: loop_blocks, + }); + } + + Ok(LoopAnalysis { + loops, + block_to_loops, + }) +} + +#[cfg(test)] +mod tests { + use crate::{ + compute_dom_tree, compute_post_order, loop_analysis::compute_loop_analysis, Backtrace, + DebugWithContext, + }; + use sway_features::ExperimentalFeatures; + use sway_types::SourceEngine; + + fn parse<'a>(se: &'a SourceEngine, body: &str) -> crate::Context<'a> { + let context = crate::parse( + &format!( + "script {{ + {body} + }} + + !0 = \"a.sw\" + " + ), + se, + ExperimentalFeatures::default(), + Backtrace::default(), + ) + .unwrap(); + context + } + + #[test] + fn must_id_instructions_on_while_loops() { + let se = SourceEngine::default(); + // #[inline(never)] + // fn simple_while() { + // let mut counter = 0; + // while counter < 10 { + // counter = counter + 1; + // } + // } + let ir = parse( + &se, + "fn simple_while_1() -> () { +local mut u64 counter +local u64 other_ +local u64 other_0 +local u64 other_1 + +entry(): +v169v1 = get_local __ptr u64, counter +v170v1 = const u64 0 +store v170v1 to v169v1 +br while() + +while(): +v173v1 = get_local __ptr u64, counter +v174v1 = get_local __ptr u64, other_ +v175v1 = const u64 10 +store v175v1 to v174v1 +v177v1 = load v173v1 +v178v1 = get_local __ptr u64, other_ +v179v1 = load v178v1 +v180v1 = cmp lt v177v1 v179v1 +cbr v180v1, while_body(), end_while() + +while_body(): +v182v1 = get_local __ptr u64, counter +v183v1 = get_local __ptr u64, other_0 +v184v1 = const u64 1 +store v184v1 to v183v1 +v186v1 = load v182v1 +v187v1 = get_local __ptr u64, other_0 +v188v1 = load v187v1 +v189v1 = add v186v1, v188v1 +v190v1 = get_local __ptr u64, counter +store v189v1 to v190v1 +br while() + +end_while(): +v193v1 = get_local __ptr u64, counter +v194v1 = get_local __ptr u64, other_1 +v195v1 = const u64 10 +store v195v1 to v194v1 +v197v1 = load v193v1 +v198v1 = get_local __ptr u64, other_1 +v199v1 = load v198v1 +v200v1 = cmp eq v197v1 v199v1 +v202v1 = const unit () +ret () v202v1 +}", + ); + + let function = ir + .module_iter() + .find_map(|m| { + m.function_iter(&ir) + .find(|f| f.get_name(&ir) == "simple_while_1") + }) + .unwrap(); + + let po = compute_post_order(&ir, &function); + let domtree = compute_dom_tree(&ir, function, &po).unwrap(); + let r = compute_loop_analysis(&ir, &domtree, &po).unwrap(); + expect_test::expect![[r#" + LoopAnalysis { + block_to_loops: { + "while": [ + 0, + ], + "while_body": [ + 0, + ], + }, + loops: { + 0: [ + "while", + "while_body", + ], + }, + }"#]] + .assert_eq(&format!("{:#?}", r.with_context(&ir))); + } + + #[test] + fn must_id_instructions_on_for_loops() { + let se = SourceEngine::default(); + // #[inline(never)] + // fn just_for_loop(vector: Vec) { + // let mut i = 0; + // for n in vector.iter() { + // i += 1; + // } + // } + let ir = parse( + &se, + "fn just_for_loop_15(vector: __ptr { { ptr, u64 }, u64 }) -> () { +local mut { { { ptr, u64 }, u64 }, u64 } __for_iterable_2 +local mut { u64, ( () | u64 ) } __for_value_opt_1 +local { u64, ( () | u64 ) } __ret_val +local { { { ptr, u64 }, u64 }, u64 } __struct_init_0 +local mut u64 i +local u64 n +local u64 other_ +local u64 other_0 +local u64 other_1 + +entry(vector: __ptr { { ptr, u64 }, u64 }): +v1132v1 = get_local __ptr u64, i +v1133v1 = const u64 0 +store v1133v1 to v1132v1 +v1135v1 = get_local __ptr { { { ptr, u64 }, u64 }, u64 }, __struct_init_0 +v1136v1 = const u64 0 +v1137v1 = get_elem_ptr v1135v1, __ptr { { ptr, u64 }, u64 }, v1136v1 +mem_copy_val v1137v1, vector +v1139v1 = const u64 1 +v1140v1 = get_elem_ptr v1135v1, __ptr u64, v1139v1 +v1141v1 = const u64 0 +store v1141v1 to v1140v1 +v1143v1 = get_local __ptr { { { ptr, u64 }, u64 }, u64 }, __for_iterable_2 +mem_copy_val v1143v1, v1135v1 +br while() + +while(): +v1146v1 = const bool true +cbr v1146v1, while_body(), end_while() + +while_body(): +v1148v1 = get_local __ptr { { { ptr, u64 }, u64 }, u64 }, __for_iterable_2 +v1149v1 = get_local __ptr { u64, ( () | u64 ) }, __ret_val +v1151v1 = get_local __ptr { u64, ( () | u64 ) }, __for_value_opt_1 +mem_copy_val v1151v1, v1149v1 +v1153v1 = get_local __ptr { u64, ( () | u64 ) }, __for_value_opt_1 +v1154v1 = const u64 0 +v1155v1 = get_elem_ptr v1153v1, __ptr u64, v1154v1 +v1156v1 = get_local __ptr u64, other_ +v1157v1 = const u64 1 +store v1157v1 to v1156v1 +v1159v1 = load v1155v1 +v1160v1 = get_local __ptr u64, other_ +v1161v1 = load v1160v1 +v1162v1 = cmp eq v1159v1 v1161v1 +v1163v1 = const bool false +cbr v1162v1, is_none_22_block2(v1163v1), is_none_22_block1() + +is_none_22_block1(): +v1165v1 = const bool true +br is_none_22_block2(v1165v1) + +is_none_22_block2(v1131v1: bool): +cbr v1131v1, end_while(), block1() + +block1(): +v1168v1 = get_local __ptr { u64, ( () | u64 ) }, __for_value_opt_1 +v1170v1 = get_local __ptr u64, n +v1172v1 = get_local __ptr u64, i +v1173v1 = get_local __ptr u64, n +v1174v1 = load v1173v1 +v1175v1 = load v1172v1 +v1176v1 = cmp eq v1174v1 v1175v1 +v1178v1 = get_local __ptr u64, i +v1179v1 = get_local __ptr u64, other_0 +v1180v1 = const u64 1 +store v1180v1 to v1179v1 +v1182v1 = load v1178v1 +v1183v1 = get_local __ptr u64, other_0 +v1184v1 = load v1183v1 +v1185v1 = add v1182v1, v1184v1 +v1186v1 = get_local __ptr u64, i +store v1185v1 to v1186v1 +br while() + +end_while(): +v1189v1 = get_local __ptr u64, i +v1190v1 = get_local __ptr u64, other_1 +v1191v1 = const u64 5 +store v1191v1 to v1190v1 +v1193v1 = load v1189v1 +v1194v1 = get_local __ptr u64, other_1 +v1195v1 = load v1194v1 +v1196v1 = cmp eq v1193v1 v1195v1 +v1198v1 = const unit () +ret () v1198v1 +}", + ); + + let function = ir + .module_iter() + .find_map(|m| { + m.function_iter(&ir) + .find(|f| f.get_name(&ir) == "just_for_loop_15") + }) + .unwrap(); + + let po = compute_post_order(&ir, &function); + let domtree = compute_dom_tree(&ir, function, &po).unwrap(); + let r = compute_loop_analysis(&ir, &domtree, &po).unwrap(); + expect_test::expect![[r#" + LoopAnalysis { + block_to_loops: { + "is_none_22_block2": [ + 0, + ], + "block1": [ + 0, + ], + "while": [ + 0, + ], + "is_none_22_block1": [ + 0, + ], + "while_body": [ + 0, + ], + }, + loops: { + 0: [ + "block1", + "is_none_22_block2", + "while", + "while_body", + "is_none_22_block1", + ], + }, + }"#]] + .assert_eq(&format!("{:#?}", r.with_context(&ir))); + } +} diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/for_loops/snapshot.toml b/test/src/e2e_vm_tests/test_programs/should_pass/language/for_loops/snapshot.toml new file mode 100644 index 00000000000..db174d81bb0 --- /dev/null +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/for_loops/snapshot.toml @@ -0,0 +1,3 @@ +cmds = [ + "forc build --path {root} --ir final --asm final | filter-fn {name} just_for_loop" +] diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/for_loops/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/for_loops/stdout.snap new file mode 100644 index 00000000000..c64f61dfd48 --- /dev/null +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/for_loops/stdout.snap @@ -0,0 +1,154 @@ +--- +source: test/src/snapshot/mod.rs +--- +> forc build --path test/src/e2e_vm_tests/test_programs/should_pass/language/for_loops --ir final --asm final | filter-fn for_loops just_for_loop + +fn just_for_loop_15(vector: __ptr { { ptr, u64 }, u64 }) -> () { + local mut { { { ptr, u64 }, u64 }, u64 } __for_iterable_2 + local mut { u64, ( () | u64 ) } __for_value_opt_1 + local { u64, ( () | u64 ) } __ret_val + local { { { ptr, u64 }, u64 }, u64 } __struct_init_0 + local mut u64 i + local u64 n + local u64 other_ + local u64 other_0 + local u64 other_1 + + entry(vector: __ptr { { ptr, u64 }, u64 }): + v1132v1 = get_local __ptr u64, i + v1133v1 = const u64 0 + store v1133v1 to v1132v1 + v1135v1 = get_local __ptr { { { ptr, u64 }, u64 }, u64 }, __struct_init_0 + v1136v1 = const u64 0 + v1137v1 = get_elem_ptr v1135v1, __ptr { { ptr, u64 }, u64 }, v1136v1 + mem_copy_val v1137v1, vector + v1139v1 = const u64 1 + v1140v1 = get_elem_ptr v1135v1, __ptr u64, v1139v1 + v1141v1 = const u64 0 + store v1141v1 to v1140v1 + v1143v1 = get_local __ptr { { { ptr, u64 }, u64 }, u64 }, __for_iterable_2 + mem_copy_val v1143v1, v1135v1 + br while() + + while(): + v1146v1 = const bool true + cbr v1146v1, while_body(), end_while() + + while_body(): + v1148v1 = get_local __ptr { { { ptr, u64 }, u64 }, u64 }, __for_iterable_2 + v1149v1 = get_local __ptr { u64, ( () | u64 ) }, __ret_val + v1150v1 = call next_17(v1148v1, v1149v1) + v1151v1 = get_local __ptr { u64, ( () | u64 ) }, __for_value_opt_1 + mem_copy_val v1151v1, v1149v1 + v1153v1 = get_local __ptr { u64, ( () | u64 ) }, __for_value_opt_1 + v1154v1 = const u64 0 + v1155v1 = get_elem_ptr v1153v1, __ptr u64, v1154v1 + v1156v1 = get_local __ptr u64, other_ + v1157v1 = const u64 1 + store v1157v1 to v1156v1 + v1159v1 = load v1155v1 + v1160v1 = get_local __ptr u64, other_ + v1161v1 = load v1160v1 + v1162v1 = cmp eq v1159v1 v1161v1 + v1163v1 = const bool false + cbr v1162v1, is_none_22_block2(v1163v1), is_none_22_block1() + + is_none_22_block1(): + v1165v1 = const bool true + br is_none_22_block2(v1165v1) + + is_none_22_block2(v1131v1: bool): + cbr v1131v1, end_while(), block1() + + block1(): + v1168v1 = get_local __ptr { u64, ( () | u64 ) }, __for_value_opt_1 + v1169v1 = call unwrap_23(v1168v1) + v1170v1 = get_local __ptr u64, n + store v1169v1 to v1170v1 + v1172v1 = get_local __ptr u64, i + v1173v1 = get_local __ptr u64, n + v1174v1 = load v1173v1 + v1175v1 = load v1172v1 + v1176v1 = cmp eq v1174v1 v1175v1 + v1177v1 = call assert_25(v1176v1) + v1178v1 = get_local __ptr u64, i + v1179v1 = get_local __ptr u64, other_0 + v1180v1 = const u64 1 + store v1180v1 to v1179v1 + v1182v1 = load v1178v1 + v1183v1 = get_local __ptr u64, other_0 + v1184v1 = load v1183v1 + v1185v1 = add v1182v1, v1184v1 + v1186v1 = get_local __ptr u64, i + store v1185v1 to v1186v1 + br while() + + end_while(): + v1189v1 = get_local __ptr u64, i + v1190v1 = get_local __ptr u64, other_1 + v1191v1 = const u64 5 + store v1191v1 to v1190v1 + v1193v1 = load v1189v1 + v1194v1 = get_local __ptr u64, other_1 + v1195v1 = load v1194v1 + v1196v1 = cmp eq v1193v1 v1195v1 + v1197v1 = call assert_25(v1196v1) + v1198v1 = const unit () + ret () v1198v1 +} + + + + + + +pshh i531456 ; [fn init: just_for_loop_15]: push used high registers 40..64 +move $$locbase $sp ; [fn init: just_for_loop_15]: set locals base register +cfei i136 ; [fn init: just_for_loop_15]: allocate: locals 136 byte(s), call args 0 slot(s) +move $r0 $$arg0 ; [fn init: just_for_loop_15]: copy argument 0 (vector) +move $r1 $$reta ; [fn init: just_for_loop_15]: save return address +sw $$locbase $zero i12 ; store word +addi $r2 $$locbase i64 ; get offset to local __ptr { { { ptr, u64 }, u64 }, u64 } +mcpi $r2 $r0 i24 ; copy memory +sw $$locbase $zero i11 ; store word +mcpi $$locbase $r2 i32 ; copy memory +addi $r0 $$locbase i48 ; get offset to local __ptr { u64, ( () | u64 ) } +move $$arg0 $$locbase ; [call: next_17]: pass argument 0 +move $$arg1 $r0 ; [call: next_17]: pass argument 1 +jal $$reta $pc i37 ; [call: next_17]: call function +addi $r2 $$locbase i32 ; get offset to local __ptr { u64, ( () | u64 ) } +mcpi $r2 $r0 i16 ; copy memory +sw $$locbase $one i14 ; store word +lw $r0 $$locbase i4 ; load word +lw $r2 $$locbase i14 ; load word +eq $r0 $r0 $r2 +movi $r2 i0 ; move parameter from branch to block argument +jnzf $r0 $zero i1 +movi $r2 i1 ; move parameter from branch to block argument +jnzf $r2 $zero i15 +addi $r0 $$locbase i32 ; get offset to local __ptr { u64, ( () | u64 ) } +move $$arg0 $r0 ; [call: unwrap_23]: pass argument 0 +jal $$reta $pc i110 ; [call: unwrap_23]: call function +sw $$locbase $$retv i13 ; store word +lw $r0 $$locbase i13 ; load word +lw $r2 $$locbase i12 ; load word +eq $r0 $r0 $r2 +move $$arg0 $r0 ; [call: assert_25]: pass argument 0 +jal $$reta $pc i121 ; [call: assert_25]: call function +sw $$locbase $one i15 ; store word +lw $r0 $$locbase i12 ; load word +lw $r2 $$locbase i15 ; load word +add $r0 $r0 $r2 +sw $$locbase $r0 i12 ; store word +jmpb $zero i27 +movi $r0 i5 ; initialize constant into register +sw $$locbase $r0 i16 ; store word +lw $r0 $$locbase i12 ; load word +lw $r2 $$locbase i16 ; load word +eq $r0 $r0 $r2 +move $$arg0 $r0 ; [call: assert_25]: pass argument 0 +jal $$reta $pc i108 ; [call: assert_25]: call function +cfsi i136 ; [fn end: just_for_loop_15] free: locals 136 byte(s), call args 0 slot(s) +move $$reta $r1 ; [fn end: just_for_loop_15] restore return address +poph i531456 ; [fn end: just_for_loop_15]: restore used high registers 40..64 +jal $zero $$reta i0 ; [fn end: just_for_loop_15] return from call diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/while_loops/snapshot.toml b/test/src/e2e_vm_tests/test_programs/should_pass/language/while_loops/snapshot.toml new file mode 100644 index 00000000000..3b0b031d731 --- /dev/null +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/while_loops/snapshot.toml @@ -0,0 +1,3 @@ +cmds = [ + "forc build --path {root} --ir final --asm final | filter-fn {name} call_too_big_to_be_inlined_three_times" +] diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/while_loops/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/while_loops/stdout.snap new file mode 100644 index 00000000000..5da72eb064c --- /dev/null +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/while_loops/stdout.snap @@ -0,0 +1,159 @@ +--- +source: test/src/snapshot/mod.rs +--- +> forc build --path test/src/e2e_vm_tests/test_programs/should_pass/language/while_loops --ir final --asm final | filter-fn while_loops simple_while + +fn simple_while_1() -> () { + local mut u64 counter + local u64 other_ + local u64 other_0 + local u64 other_1 + + entry(): + v170v1 = get_local __ptr u64, counter + v171v1 = const u64 0 + store v171v1 to v170v1 + br while() + + while(): + v174v1 = get_local __ptr u64, counter + v175v1 = get_local __ptr u64, other_ + v176v1 = const u64 10 + store v176v1 to v175v1 + v178v1 = load v174v1 + v179v1 = get_local __ptr u64, other_ + v180v1 = load v179v1 + v181v1 = cmp lt v178v1 v180v1 + cbr v181v1, while_body(), end_while() + + while_body(): + v183v1 = get_local __ptr u64, counter + v184v1 = get_local __ptr u64, other_0 + v185v1 = const u64 1 + store v185v1 to v184v1 + v187v1 = load v183v1 + v188v1 = get_local __ptr u64, other_0 + v189v1 = load v188v1 + v190v1 = add v187v1, v189v1 + v191v1 = get_local __ptr u64, counter + store v190v1 to v191v1 + br while() + + end_while(): + v194v1 = get_local __ptr u64, counter + v195v1 = get_local __ptr u64, other_1 + v196v1 = const u64 10 + store v196v1 to v195v1 + v198v1 = load v194v1 + v199v1 = get_local __ptr u64, other_1 + v200v1 = load v199v1 + v201v1 = cmp eq v198v1 v200v1 + v202v1 = call assert_4(v201v1) + v203v1 = const unit () + ret () v203v1 +} + + +fn simple_while_2_8() -> () { + local mut u64 counter + local u64 other_ + local u64 other_0 + + entry(): + v221v1 = call too_big_to_be_inlined_9() + v222v1 = get_local __ptr u64, counter + v223v1 = const u64 0 + store v223v1 to v222v1 + br while() + + while(): + v226v1 = get_local __ptr u64, counter + v227v1 = get_local __ptr u64, other_ + v228v1 = const u64 10 + store v228v1 to v227v1 + v230v1 = load v226v1 + v231v1 = get_local __ptr u64, other_ + v232v1 = load v231v1 + v233v1 = cmp lt v230v1 v232v1 + cbr v233v1, while_body(), end_while() + + while_body(): + v235v1 = get_local __ptr u64, counter + v236v1 = get_local __ptr u64, other_0 + v237v1 = const u64 1 + store v237v1 to v236v1 + v239v1 = load v235v1 + v240v1 = get_local __ptr u64, other_0 + v241v1 = load v240v1 + v242v1 = add v239v1, v241v1 + v243v1 = get_local __ptr u64, counter + store v242v1 to v243v1 + v245v1 = call too_big_to_be_inlined_9() + br while() + + end_while(): + v247v1 = const unit () + ret () v247v1 +} + + + + + +pshh i531456 ; [fn init: simple_while_1]: push used high registers 40..64 +move $$locbase $sp ; [fn init: simple_while_1]: set locals base register +cfei i32 ; [fn init: simple_while_1]: allocate: locals 32 byte(s), call args 0 slot(s) +move $r0 $$reta ; [fn init: simple_while_1]: save return address +sw $$locbase $zero i0 ; store word +movi $r1 i10 ; initialize constant into register +sw $$locbase $r1 i1 ; store word +lw $r1 $$locbase i0 ; load word +lw $r2 $$locbase i1 ; load word +lt $r1 $r1 $r2 +jnzf $r1 $zero i8 +movi $r1 i10 ; initialize constant into register +sw $$locbase $r1 i3 ; store word +lw $r1 $$locbase i0 ; load word +lw $r2 $$locbase i3 ; load word +eq $r1 $r1 $r2 +move $$arg0 $r1 ; [call: assert_4]: pass argument 0 +jal $$reta $pc i12 ; [call: assert_4]: call function +jmpf $zero i6 +sw $$locbase $one i2 ; store word +lw $r1 $$locbase i0 ; load word +lw $r2 $$locbase i2 ; load word +add $r1 $r1 $r2 +sw $$locbase $r1 i0 ; store word +jmpb $zero i18 +cfsi i32 ; [fn end: simple_while_1] free: locals 32 byte(s), call args 0 slot(s) +move $$reta $r0 ; [fn end: simple_while_1] restore return address +poph i531456 ; [fn end: simple_while_1]: restore used high registers 40..64 +jal $zero $$reta i0 ; [fn end: simple_while_1] return from call + + + + +pshh i531456 ; [fn init: simple_while_2_8]: push used high registers 40..64 +move $$locbase $sp ; [fn init: simple_while_2_8]: set locals base register +cfei i24 ; [fn init: simple_while_2_8]: allocate: locals 24 byte(s), call args 0 slot(s) +move $r0 $$reta ; [fn init: simple_while_2_8]: save return address +jal $$reta $pc i20 ; [call: too_big_to_be_inlined_9]: call function +sw $$locbase $zero i0 ; store word +movi $r1 i10 ; initialize constant into register +sw $$locbase $r1 i1 ; store word +lw $r1 $$locbase i0 ; load word +lw $r2 $$locbase i1 ; load word +lt $r1 $r1 $r2 +jnzf $r1 $zero i1 +jmpf $zero i7 +sw $$locbase $one i2 ; store word +lw $r1 $$locbase i0 ; load word +lw $r2 $$locbase i2 ; load word +add $r1 $r1 $r2 +sw $$locbase $r1 i0 ; store word +jal $$reta $pc i6 ; [call: too_big_to_be_inlined_9]: call function +jmpb $zero i12 +cfsi i24 ; [fn end: simple_while_2_8] free: locals 24 byte(s), call args 0 slot(s) +move $$reta $r0 ; [fn end: simple_while_2_8] restore return address +poph i531456 ; [fn end: simple_while_2_8]: restore used high registers 40..64 +jal $zero $$reta i0 ; [fn end: simple_while_2_8] return from call From 0462710cf026f8934bc2734d53d2405a1b6c550b Mon Sep 17 00:00:00 2001 From: xunilrj Date: Tue, 9 Jun 2026 21:37:29 -0300 Subject: [PATCH 13/42] fmt and clippy issues --- sway-ir/src/analysis/loop_analysis.rs | 15 ++++++++------- sway-ir/src/optimize/inline.rs | 4 ++-- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/sway-ir/src/analysis/loop_analysis.rs b/sway-ir/src/analysis/loop_analysis.rs index 236dde848c9..0ac0f859148 100644 --- a/sway-ir/src/analysis/loop_analysis.rs +++ b/sway-ir/src/analysis/loop_analysis.rs @@ -39,6 +39,9 @@ impl LoopAnalysis { impl DebugWithContext for LoopAnalysis { fn fmt_with_context(&self, f: &mut std::fmt::Formatter, context: &Context) -> std::fmt::Result { let mut block_to_loops = HashMap::new(); + + // This is fine because this is used only for debug + #[allow(clippy::iter_over_hash_type)] for (block, loops) in self.block_to_loops.iter() { block_to_loops.insert(block.get_label(context), loops); } @@ -103,6 +106,8 @@ fn compute_loop_analysis( let mut loops = vec![]; for (loop_tail, loop_header) in back_edges { + let loop_id = loops.len(); + let mut loop_blocks = HashSet::new(); let mut q = vec![loop_tail]; while let Some(block) = q.pop() { @@ -110,6 +115,9 @@ fn compute_loop_analysis( continue; } + // Map blocks to loops + block_to_loops.entry(block).or_default().push(loop_id); + if block == loop_header { continue; } @@ -120,13 +128,6 @@ fn compute_loop_analysis( assert!(loop_blocks.contains(&loop_tail)); assert!(loop_blocks.contains(&loop_header)); - // Map blocks to loops - let loop_id = loops.len(); - - for block in loop_blocks.iter() { - block_to_loops.entry(*block).or_default().push(loop_id); - } - loops.push(Loop { blocks: loop_blocks, }); diff --git a/sway-ir/src/optimize/inline.rs b/sway-ir/src/optimize/inline.rs index 024cdf158b3..3b502d53e91 100644 --- a/sway-ir/src/optimize/inline.rs +++ b/sway-ir/src/optimize/inline.rs @@ -18,8 +18,8 @@ use crate::{ metadata::{combine, MetadataIndex}, value::{Value, ValueContent, ValueDatum}, variable::LocalVar, - AnalysisResults, BlockArgument, DebugWithContext, Instruction, LoopAnalysis, Module, Pass, - PassMutability, ScopedPass, LOOP_ANALYSIS_NAME, + AnalysisResults, BlockArgument, Instruction, LoopAnalysis, Module, Pass, PassMutability, + ScopedPass, LOOP_ANALYSIS_NAME, }; pub const FN_INLINE_NAME: &str = "inline"; From 405397c0537a2810070400fdf0641faecc694de7 Mon Sep 17 00:00:00 2001 From: xunilrj Date: Tue, 9 Jun 2026 21:43:44 -0300 Subject: [PATCH 14/42] update tests --- .../language/array/array_repeat/stdout.snap | 11 + .../language/for_loops/stdout.snap | 246 ++++++++++------ .../language/intrinsics/dbg/stdout.snap | 10 + .../intrinsics/dbg_release/stdout.snap | 5 + .../language/while_loops/stdout.snap | 269 +++++++++--------- .../should_pass/stdlib/vec/stdout.snap | 6 +- .../stdlib/vec_encoding_decoding/stdout.snap | 14 +- .../const_of_contract_call/stdout.snap | 40 +++ 8 files changed, 366 insertions(+), 235 deletions(-) diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/array/array_repeat/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/array/array_repeat/stdout.snap index c8376ca551d..cb035abca87 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/array/array_repeat/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/array/array_repeat/stdout.snap @@ -1285,6 +1285,7 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/language/array/array_repeat Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-assert) Compiling script array_repeat (test/src/e2e_vm_tests/test_programs/should_pass/language/array/array_repeat) +<<<<<<< HEAD <<<<<<< HEAD Finished release [optimized + fuel] target(s) [1.944 KB] in ??? script array_repeat @@ -1296,15 +1297,25 @@ output: Bytecode size: 2040 bytes (2.04 KB) Bytecode hash: 0x4f9edafab44fe06af95d8e015a91850559d840696e05d6ae80913d7873a73d54 >>>>>>> a94b693b4 (update tests) +======= + Finished release [optimized + fuel] target(s) [2.152 KB] in ??? + script array_repeat + Bytecode size: 2152 bytes (2.152 KB) + Bytecode hash: 0x77810750c970c763f9a0d60dba74f0cc41bc81a61944521b3e8c305234423f8b +>>>>>>> 2c082a4be (update tests) Running 1 test, filtered 0 tests tested -- array_repeat +<<<<<<< HEAD <<<<<<< HEAD test test_array_repeat_zero ... ok (???, 2624891 gas) ======= test test_array_repeat_zero ... ok (???, 2887161 gas) >>>>>>> a94b693b4 (update tests) +======= + test test_array_repeat_zero ... ok (???, 2887761 gas) +>>>>>>> 2c082a4be (update tests) test result: OK. 1 passed; 0 failed; finished in ??? diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/for_loops/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/for_loops/stdout.snap index c64f61dfd48..9c3fff130fa 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/for_loops/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/for_loops/stdout.snap @@ -6,95 +6,137 @@ source: test/src/snapshot/mod.rs fn just_for_loop_15(vector: __ptr { { ptr, u64 }, u64 }) -> () { local mut { { { ptr, u64 }, u64 }, u64 } __for_iterable_2 local mut { u64, ( () | u64 ) } __for_value_opt_1 + local { u64, ( () | u64 ) } __matched_value_4 local { u64, ( () | u64 ) } __ret_val local { { { ptr, u64 }, u64 }, u64 } __struct_init_0 + local u64 code_ + local u64 code_0 + local bool condition_ local mut u64 i - local u64 n local u64 other_ local u64 other_0 local u64 other_1 + local u64 other_2 entry(vector: __ptr { { ptr, u64 }, u64 }): - v1132v1 = get_local __ptr u64, i - v1133v1 = const u64 0 - store v1133v1 to v1132v1 - v1135v1 = get_local __ptr { { { ptr, u64 }, u64 }, u64 }, __struct_init_0 - v1136v1 = const u64 0 - v1137v1 = get_elem_ptr v1135v1, __ptr { { ptr, u64 }, u64 }, v1136v1 - mem_copy_val v1137v1, vector - v1139v1 = const u64 1 - v1140v1 = get_elem_ptr v1135v1, __ptr u64, v1139v1 - v1141v1 = const u64 0 - store v1141v1 to v1140v1 - v1143v1 = get_local __ptr { { { ptr, u64 }, u64 }, u64 }, __for_iterable_2 - mem_copy_val v1143v1, v1135v1 + v1342v1 = get_local __ptr u64, i + v1343v1 = const u64 0 + store v1343v1 to v1342v1 + v1345v1 = get_local __ptr { { { ptr, u64 }, u64 }, u64 }, __struct_init_0 + v1346v1 = const u64 0 + v1347v1 = get_elem_ptr v1345v1, __ptr { { ptr, u64 }, u64 }, v1346v1 + mem_copy_val v1347v1, vector + v1349v1 = const u64 1 + v1350v1 = get_elem_ptr v1345v1, __ptr u64, v1349v1 + v1351v1 = const u64 0 + store v1351v1 to v1350v1 + v1353v1 = get_local __ptr { { { ptr, u64 }, u64 }, u64 }, __for_iterable_2 + mem_copy_val v1353v1, v1345v1 br while() while(): - v1146v1 = const bool true - cbr v1146v1, while_body(), end_while() + v1356v1 = const bool true + cbr v1356v1, while_body(), end_while() while_body(): - v1148v1 = get_local __ptr { { { ptr, u64 }, u64 }, u64 }, __for_iterable_2 - v1149v1 = get_local __ptr { u64, ( () | u64 ) }, __ret_val - v1150v1 = call next_17(v1148v1, v1149v1) - v1151v1 = get_local __ptr { u64, ( () | u64 ) }, __for_value_opt_1 - mem_copy_val v1151v1, v1149v1 - v1153v1 = get_local __ptr { u64, ( () | u64 ) }, __for_value_opt_1 - v1154v1 = const u64 0 - v1155v1 = get_elem_ptr v1153v1, __ptr u64, v1154v1 - v1156v1 = get_local __ptr u64, other_ - v1157v1 = const u64 1 - store v1157v1 to v1156v1 - v1159v1 = load v1155v1 - v1160v1 = get_local __ptr u64, other_ - v1161v1 = load v1160v1 - v1162v1 = cmp eq v1159v1 v1161v1 - v1163v1 = const bool false - cbr v1162v1, is_none_22_block2(v1163v1), is_none_22_block1() + v1358v1 = get_local __ptr { { { ptr, u64 }, u64 }, u64 }, __for_iterable_2 + v1359v1 = get_local __ptr { u64, ( () | u64 ) }, __ret_val + v1360v1 = call next_17(v1358v1, v1359v1) + v1361v1 = get_local __ptr { u64, ( () | u64 ) }, __for_value_opt_1 + mem_copy_val v1361v1, v1359v1 + v1363v1 = get_local __ptr { u64, ( () | u64 ) }, __for_value_opt_1 + v1364v1 = const u64 0 + v1365v1 = get_elem_ptr v1363v1, __ptr u64, v1364v1 + v1366v1 = get_local __ptr u64, other_ + v1367v1 = const u64 1 + store v1367v1 to v1366v1 + v1369v1 = load v1365v1 + v1370v1 = get_local __ptr u64, other_ + v1371v1 = load v1370v1 + v1372v1 = cmp eq v1369v1 v1371v1 + v1373v1 = const bool false + cbr v1372v1, is_none_22_block2(v1373v1), is_none_22_block1() is_none_22_block1(): - v1165v1 = const bool true - br is_none_22_block2(v1165v1) + v1375v1 = const bool true + br is_none_22_block2(v1375v1) - is_none_22_block2(v1131v1: bool): - cbr v1131v1, end_while(), block1() + is_none_22_block2(v1341v1: bool): + cbr v1341v1, end_while(), block1() block1(): - v1168v1 = get_local __ptr { u64, ( () | u64 ) }, __for_value_opt_1 - v1169v1 = call unwrap_23(v1168v1) - v1170v1 = get_local __ptr u64, n - store v1169v1 to v1170v1 - v1172v1 = get_local __ptr u64, i - v1173v1 = get_local __ptr u64, n - v1174v1 = load v1173v1 - v1175v1 = load v1172v1 - v1176v1 = cmp eq v1174v1 v1175v1 - v1177v1 = call assert_25(v1176v1) - v1178v1 = get_local __ptr u64, i - v1179v1 = get_local __ptr u64, other_0 - v1180v1 = const u64 1 - store v1180v1 to v1179v1 - v1182v1 = load v1178v1 - v1183v1 = get_local __ptr u64, other_0 - v1184v1 = load v1183v1 - v1185v1 = add v1182v1, v1184v1 - v1186v1 = get_local __ptr u64, i - store v1185v1 to v1186v1 + v1378v1 = get_local __ptr { u64, ( () | u64 ) }, __for_value_opt_1 + v1379v1 = get_local __ptr { u64, ( () | u64 ) }, __matched_value_4 + mem_copy_val v1379v1, v1378v1 + v1381v1 = const u64 0 + v1382v1 = get_elem_ptr v1378v1, __ptr u64, v1381v1 + v1383v1 = get_local __ptr u64, other_0 + v1384v1 = const u64 1 + store v1384v1 to v1383v1 + v1386v1 = load v1382v1 + v1387v1 = get_local __ptr u64, other_0 + v1388v1 = load v1387v1 + v1389v1 = cmp eq v1386v1 v1388v1 + cbr v1389v1, unwrap_23_block0(), unwrap_23_block1() + + unwrap_23_block0(): + v1391v1 = get_local __ptr { u64, ( () | u64 ) }, __matched_value_4 + v1392v1 = const u64 1 + v1393v1 = const u64 1 + v1394v1 = get_elem_ptr v1391v1, __ptr u64, v1392v1, v1393v1 + v1395v1 = get_local __ptr u64, i + v1396v1 = load v1394v1 + v1397v1 = load v1395v1 + v1398v1 = cmp eq v1396v1 v1397v1 + v1399v1 = get_local __ptr bool, condition_ + store v1398v1 to v1399v1 + v1401v1 = get_local __ptr bool, condition_ + v1402v1 = load v1401v1 + v1403v1 = const bool false + v1404v1 = cmp eq v1402v1 v1403v1 + cbr v1404v1, assert_25_block0(), assert_25_block1() + + unwrap_23_block1(): + v1406v1 = get_local __ptr u64, code_0 + v1407v1 = const u64 0 + store v1407v1 to v1406v1 + v1409v1 = get_local __ptr u64, code_0 + v1410v1 = load v1409v1 + revert v1410v1 + + assert_25_block0(): + v1412v1 = get_global __ptr u64, std::error_signals::FAILED_ASSERT_SIGNAL + v1413v1 = get_local __ptr u64, code_ + mem_copy_val v1413v1, v1412v1 + v1415v1 = get_local __ptr u64, code_ + v1416v1 = load v1415v1 + revert v1416v1 + + assert_25_block1(): + v1418v1 = get_local __ptr u64, i + v1419v1 = get_local __ptr u64, other_1 + v1420v1 = const u64 1 + store v1420v1 to v1419v1 + v1422v1 = load v1418v1 + v1423v1 = get_local __ptr u64, other_1 + v1424v1 = load v1423v1 + v1425v1 = add v1422v1, v1424v1 + v1426v1 = get_local __ptr u64, i + store v1425v1 to v1426v1 br while() end_while(): - v1189v1 = get_local __ptr u64, i - v1190v1 = get_local __ptr u64, other_1 - v1191v1 = const u64 5 - store v1191v1 to v1190v1 - v1193v1 = load v1189v1 - v1194v1 = get_local __ptr u64, other_1 - v1195v1 = load v1194v1 - v1196v1 = cmp eq v1193v1 v1195v1 - v1197v1 = call assert_25(v1196v1) - v1198v1 = const unit () - ret () v1198v1 + v1429v1 = get_local __ptr u64, i + v1430v1 = get_local __ptr u64, other_2 + v1431v1 = const u64 5 + store v1431v1 to v1430v1 + v1433v1 = load v1429v1 + v1434v1 = get_local __ptr u64, other_2 + v1435v1 = load v1434v1 + v1436v1 = cmp eq v1433v1 v1435v1 + v1437v1 = call assert_25(v1436v1) + v1438v1 = const unit () + ret () v1438v1 } @@ -104,51 +146,67 @@ fn just_for_loop_15(vector: __ptr { { ptr, u64 }, u64 }) -> () { pshh i531456 ; [fn init: just_for_loop_15]: push used high registers 40..64 move $$locbase $sp ; [fn init: just_for_loop_15]: set locals base register -cfei i136 ; [fn init: just_for_loop_15]: allocate: locals 136 byte(s), call args 0 slot(s) +cfei i176 ; [fn init: just_for_loop_15]: allocate: locals 176 byte(s), call args 0 slot(s) move $r0 $$arg0 ; [fn init: just_for_loop_15]: copy argument 0 (vector) move $r1 $$reta ; [fn init: just_for_loop_15]: save return address -sw $$locbase $zero i12 ; store word -addi $r2 $$locbase i64 ; get offset to local __ptr { { { ptr, u64 }, u64 }, u64 } +sw $$locbase $zero i17 ; store word +addi $r2 $$locbase i80 ; get offset to local __ptr { { { ptr, u64 }, u64 }, u64 } mcpi $r2 $r0 i24 ; copy memory -sw $$locbase $zero i11 ; store word +sw $$locbase $zero i13 ; store word mcpi $$locbase $r2 i32 ; copy memory -addi $r0 $$locbase i48 ; get offset to local __ptr { u64, ( () | u64 ) } +addi $r0 $$locbase i64 ; get offset to local __ptr { u64, ( () | u64 ) } move $$arg0 $$locbase ; [call: next_17]: pass argument 0 move $$arg1 $r0 ; [call: next_17]: pass argument 1 -jal $$reta $pc i37 ; [call: next_17]: call function +jal $$reta $pc i54 ; [call: next_17]: call function addi $r2 $$locbase i32 ; get offset to local __ptr { u64, ( () | u64 ) } mcpi $r2 $r0 i16 ; copy memory -sw $$locbase $one i14 ; store word +sw $$locbase $one i18 ; store word lw $r0 $$locbase i4 ; load word -lw $r2 $$locbase i14 ; load word +lw $r2 $$locbase i18 ; load word eq $r0 $r0 $r2 movi $r2 i0 ; move parameter from branch to block argument jnzf $r0 $zero i1 movi $r2 i1 ; move parameter from branch to block argument -jnzf $r2 $zero i15 +jnzf $r2 $zero i32 addi $r0 $$locbase i32 ; get offset to local __ptr { u64, ( () | u64 ) } -move $$arg0 $r0 ; [call: unwrap_23]: pass argument 0 -jal $$reta $pc i110 ; [call: unwrap_23]: call function -sw $$locbase $$retv i13 ; store word -lw $r0 $$locbase i13 ; load word -lw $r2 $$locbase i12 ; load word +addi $r2 $$locbase i48 ; get offset to local __ptr { u64, ( () | u64 ) } +mcpi $r2 $r0 i16 ; copy memory +sw $$locbase $one i19 ; store word +lw $r0 $$locbase i4 ; load word +lw $r2 $$locbase i19 ; load word eq $r0 $r0 $r2 -move $$arg0 $r0 ; [call: assert_25]: pass argument 0 -jal $$reta $pc i121 ; [call: assert_25]: call function -sw $$locbase $one i15 ; store word -lw $r0 $$locbase i12 ; load word -lw $r2 $$locbase i15 ; load word +jnzf $r0 $zero i3 +sw $$locbase $zero i15 ; store word +lw $r0 $$locbase i15 ; load word +rvrt $r0 +lw $r0 $$locbase i7 ; load word +lw $r2 $$locbase i17 ; load word +eq $r0 $r0 $r2 +addi $r2 $$locbase i128 ; get offset to local __ptr bool +sb $r2 $r0 i0 ; store byte +addi $r0 $$locbase i128 ; get offset to local __ptr bool +lb $r0 $r0 i0 ; load byte +eq $r0 $r0 $zero +jnzf $r0 $zero i6 +sw $$locbase $one i20 ; store word +lw $r0 $$locbase i17 ; load word +lw $r2 $$locbase i20 ; load word add $r0 $r0 $r2 -sw $$locbase $r0 i12 ; store word -jmpb $zero i27 +sw $$locbase $r0 i17 ; store word +jmpb $zero i38 +addr $r0 data_NonConfigurable_0; get std::error_signals::FAILED_ASSERT_SIGNAL's address in data section +addi $r1 $$locbase i112 ; get offset to local __ptr u64 +mcpi $r1 $r0 i8 ; copy memory +lw $r0 $$locbase i14 ; load word +rvrt $r0 movi $r0 i5 ; initialize constant into register -sw $$locbase $r0 i16 ; store word -lw $r0 $$locbase i12 ; load word -lw $r2 $$locbase i16 ; load word +sw $$locbase $r0 i21 ; store word +lw $r0 $$locbase i17 ; load word +lw $r2 $$locbase i21 ; load word eq $r0 $r0 $r2 move $$arg0 $r0 ; [call: assert_25]: pass argument 0 -jal $$reta $pc i108 ; [call: assert_25]: call function -cfsi i136 ; [fn end: just_for_loop_15] free: locals 136 byte(s), call args 0 slot(s) +jal $$reta $pc i80 ; [call: assert_25]: call function +cfsi i176 ; [fn end: just_for_loop_15] free: locals 176 byte(s), call args 0 slot(s) move $$reta $r1 ; [fn end: just_for_loop_15] restore return address poph i531456 ; [fn end: just_for_loop_15]: restore used high registers 40..64 jal $zero $$reta i0 ; [fn end: just_for_loop_15] return from call diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg/stdout.snap index 27f6ebaa9c8..e97d1a29f75 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg/stdout.snap @@ -61,6 +61,8 @@ ecal $r1 $r0 $zero $zero ; ecal id fd zero zero ecal $r1 $r0 $zero $zero ; ecal id fd zero zero ecal $r1 $r0 $zero $zero ; ecal id fd zero zero ecal $r1 $r0 $zero $zero ; ecal id fd zero zero +ecal $r4 $r0 $r1 $r2 ; ecal id fd buf count +ecal $r3 $r0 $r1 $r2 ; ecal id fd buf count ecal $r3 $r0 $r1 $r2 ; ecal id fd buf count > forc build --path test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg --release --asm final | sub ecal @@ -71,20 +73,28 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg Compiling library std (sway-lib-std) Compiling script dbg (test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg) +<<<<<<< HEAD <<<<<<< HEAD Finished debug [unoptimized + fuel] target(s) [36.48 KB] in ??? ======= Finished debug [unoptimized + fuel] target(s) [36.664 KB] in ??? >>>>>>> a94b693b4 (update tests) +======= + Finished debug [unoptimized + fuel] target(s) [37.08 KB] in ??? +>>>>>>> 2c082a4be (update tests) Running 1 test, filtered 0 tests tested -- dbg +<<<<<<< HEAD <<<<<<< HEAD test call_main ... ok (???, 117840 gas) ======= test call_main ... ok (???, 131571 gas) >>>>>>> a94b693b4 (update tests) +======= + test call_main ... ok (???, 131162 gas) +>>>>>>> 2c082a4be (update tests) debug output: [src/main.sw:13:13] () = () [src/main.sw:15:13] true = true diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg_release/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg_release/stdout.snap index 72db0065643..2b7f0e7ab3a 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg_release/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg_release/stdout.snap @@ -15,6 +15,7 @@ ecal $r1 $r0 $zero $zero ; ecal id fd zero zero ecal $r1 $r0 $zero $zero ; ecal id fd zero zero ecal $r1 $r0 $zero $zero ; ecal id fd zero zero ecal $r1 $r0 $zero $zero ; ecal id fd zero zero +ecal $r0 $r1 $r2 $r4 ; ecal id fd buf count ecal $r3 $r0 $r1 $r2 ; ecal id fd buf count > forc build --path test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg_release --release --asm final | sub ecal @@ -41,7 +42,11 @@ ecal $r0 $r1 $zero $zero ; ecal id fd zero zero ecal $r0 $r1 $zero $zero ; ecal id fd zero zero ecal $r0 $r1 $zero $zero ; ecal id fd zero zero ecal $r0 $r1 $zero $zero ; ecal id fd zero zero +<<<<<<< HEAD >>>>>>> a94b693b4 (update tests) +======= +ecal $r5 $r6 $r2 $r4 ; ecal id fd buf count +>>>>>>> 2c082a4be (update tests) ecal $r2 $r3 $r0 $r1 ; ecal id fd buf count ecal $r2 $r3 $r0 $r1 ; ecal id fd buf count ecal $r3 $r4 $$locbase $one ; ecal id fd buf count diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/while_loops/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/while_loops/stdout.snap index 5da72eb064c..c34dd584521 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/while_loops/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/while_loops/stdout.snap @@ -1,159 +1,166 @@ --- source: test/src/snapshot/mod.rs --- -> forc build --path test/src/e2e_vm_tests/test_programs/should_pass/language/while_loops --ir final --asm final | filter-fn while_loops simple_while +> forc build --path test/src/e2e_vm_tests/test_programs/should_pass/language/while_loops --ir final --asm final | filter-fn while_loops call_too_big_to_be_inlined_three_times -fn simple_while_1() -> () { +fn call_too_big_to_be_inlined_three_times_8() -> () { + local u64 code_ + local u64 code_0 + local bool condition_ + local bool condition_0 local mut u64 counter local u64 other_ local u64 other_0 + local u64 other_00 local u64 other_1 - - entry(): - v170v1 = get_local __ptr u64, counter - v171v1 = const u64 0 - store v171v1 to v170v1 - br while() - - while(): - v174v1 = get_local __ptr u64, counter - v175v1 = get_local __ptr u64, other_ - v176v1 = const u64 10 - store v176v1 to v175v1 - v178v1 = load v174v1 - v179v1 = get_local __ptr u64, other_ - v180v1 = load v179v1 - v181v1 = cmp lt v178v1 v180v1 - cbr v181v1, while_body(), end_while() - - while_body(): - v183v1 = get_local __ptr u64, counter - v184v1 = get_local __ptr u64, other_0 - v185v1 = const u64 1 - store v185v1 to v184v1 - v187v1 = load v183v1 - v188v1 = get_local __ptr u64, other_0 - v189v1 = load v188v1 - v190v1 = add v187v1, v189v1 - v191v1 = get_local __ptr u64, counter - store v190v1 to v191v1 - br while() - - end_while(): - v194v1 = get_local __ptr u64, counter - v195v1 = get_local __ptr u64, other_1 - v196v1 = const u64 10 - store v196v1 to v195v1 - v198v1 = load v194v1 - v199v1 = get_local __ptr u64, other_1 - v200v1 = load v199v1 - v201v1 = cmp eq v198v1 v200v1 - v202v1 = call assert_4(v201v1) - v203v1 = const unit () - ret () v203v1 -} - - -fn simple_while_2_8() -> () { - local mut u64 counter - local u64 other_ - local u64 other_0 + local u64 self_00 + local u64 self_1 entry(): v221v1 = call too_big_to_be_inlined_9() - v222v1 = get_local __ptr u64, counter - v223v1 = const u64 0 - store v223v1 to v222v1 + v222v1 = call too_big_to_be_inlined_9() + v223v1 = get_local __ptr u64, counter + v224v1 = const u64 0 + store v224v1 to v223v1 br while() while(): - v226v1 = get_local __ptr u64, counter - v227v1 = get_local __ptr u64, other_ - v228v1 = const u64 10 - store v228v1 to v227v1 - v230v1 = load v226v1 - v231v1 = get_local __ptr u64, other_ - v232v1 = load v231v1 - v233v1 = cmp lt v230v1 v232v1 - cbr v233v1, while_body(), end_while() + v227v1 = get_local __ptr u64, counter + v228v1 = get_local __ptr u64, other_ + v229v1 = const u64 10 + store v229v1 to v228v1 + v231v1 = load v227v1 + v232v1 = get_local __ptr u64, other_ + v233v1 = load v232v1 + v234v1 = cmp lt v231v1 v233v1 + cbr v234v1, while_body(), end_while() while_body(): - v235v1 = get_local __ptr u64, counter - v236v1 = get_local __ptr u64, other_0 - v237v1 = const u64 1 - store v237v1 to v236v1 - v239v1 = load v235v1 - v240v1 = get_local __ptr u64, other_0 - v241v1 = load v240v1 - v242v1 = add v239v1, v241v1 - v243v1 = get_local __ptr u64, counter - store v242v1 to v243v1 - v245v1 = call too_big_to_be_inlined_9() - br while() + v236v1 = get_local __ptr u64, counter + v237v1 = get_local __ptr u64, other_0 + v238v1 = const u64 1 + store v238v1 to v237v1 + v240v1 = load v236v1 + v241v1 = get_local __ptr u64, other_0 + v242v1 = load v241v1 + v243v1 = add v240v1, v242v1 + v244v1 = get_local __ptr u64, counter + store v243v1 to v244v1 + v246v1 = get_local __ptr u64, self_1 + v247v1 = const u64 1 + store v247v1 to v246v1 + v249v1 = get_local __ptr u64, other_1 + v250v1 = const u64 1 + store v250v1 to v249v1 + v252v1 = get_local __ptr u64, self_1 + v253v1 = load v252v1 + v254v1 = get_local __ptr u64, other_1 + v255v1 = load v254v1 + v256v1 = cmp eq v253v1 v255v1 + v257v1 = get_local __ptr bool, condition_ + store v256v1 to v257v1 + v259v1 = get_local __ptr bool, condition_ + v260v1 = load v259v1 + v261v1 = const bool false + v262v1 = cmp eq v260v1 v261v1 + cbr v262v1, assert_4_block0(), assert_4_block1() + + assert_4_block0(): + v264v1 = get_global __ptr u64, std::error_signals::FAILED_ASSERT_SIGNAL + v265v1 = get_local __ptr u64, code_ + mem_copy_val v265v1, v264v1 + v267v1 = get_local __ptr u64, code_ + v268v1 = load v267v1 + revert v268v1 + + assert_4_block1(): + v270v1 = get_local __ptr u64, self_00 + v271v1 = const u64 1 + store v271v1 to v270v1 + v273v1 = get_local __ptr u64, other_00 + v274v1 = const u64 1 + store v274v1 to v273v1 + v276v1 = get_local __ptr u64, self_00 + v277v1 = load v276v1 + v278v1 = get_local __ptr u64, other_00 + v279v1 = load v278v1 + v280v1 = cmp eq v277v1 v279v1 + v281v1 = get_local __ptr bool, condition_0 + store v280v1 to v281v1 + v283v1 = get_local __ptr bool, condition_0 + v284v1 = load v283v1 + v285v1 = cmp eq v284v1 v261v1 + cbr v285v1, assert_4_block05(), while() + + assert_4_block05(): + v287v1 = get_global __ptr u64, std::error_signals::FAILED_ASSERT_SIGNAL + v288v1 = get_local __ptr u64, code_0 + mem_copy_val v288v1, v287v1 + v290v1 = get_local __ptr u64, code_0 + v291v1 = load v290v1 + revert v291v1 end_while(): - v247v1 = const unit () - ret () v247v1 + v293v1 = const unit () + ret () v293v1 } -pshh i531456 ; [fn init: simple_while_1]: push used high registers 40..64 -move $$locbase $sp ; [fn init: simple_while_1]: set locals base register -cfei i32 ; [fn init: simple_while_1]: allocate: locals 32 byte(s), call args 0 slot(s) -move $r0 $$reta ; [fn init: simple_while_1]: save return address -sw $$locbase $zero i0 ; store word -movi $r1 i10 ; initialize constant into register -sw $$locbase $r1 i1 ; store word -lw $r1 $$locbase i0 ; load word -lw $r2 $$locbase i1 ; load word -lt $r1 $r1 $r2 -jnzf $r1 $zero i8 -movi $r1 i10 ; initialize constant into register -sw $$locbase $r1 i3 ; store word -lw $r1 $$locbase i0 ; load word -lw $r2 $$locbase i3 ; load word -eq $r1 $r1 $r2 -move $$arg0 $r1 ; [call: assert_4]: pass argument 0 -jal $$reta $pc i12 ; [call: assert_4]: call function -jmpf $zero i6 -sw $$locbase $one i2 ; store word -lw $r1 $$locbase i0 ; load word -lw $r2 $$locbase i2 ; load word -add $r1 $r1 $r2 -sw $$locbase $r1 i0 ; store word -jmpb $zero i18 -cfsi i32 ; [fn end: simple_while_1] free: locals 32 byte(s), call args 0 slot(s) -move $$reta $r0 ; [fn end: simple_while_1] restore return address -poph i531456 ; [fn end: simple_while_1]: restore used high registers 40..64 -jal $zero $$reta i0 ; [fn end: simple_while_1] return from call - - - - -pshh i531456 ; [fn init: simple_while_2_8]: push used high registers 40..64 -move $$locbase $sp ; [fn init: simple_while_2_8]: set locals base register -cfei i24 ; [fn init: simple_while_2_8]: allocate: locals 24 byte(s), call args 0 slot(s) -move $r0 $$reta ; [fn init: simple_while_2_8]: save return address -jal $$reta $pc i20 ; [call: too_big_to_be_inlined_9]: call function -sw $$locbase $zero i0 ; store word +pshh i531456 ; [fn init: call_too_big_to_be_inlined_three_times_8]: push used high registers 40..64 +move $$locbase $sp ; [fn init: call_too_big_to_be_inlined_three_times_8]: set locals base register +cfei i88 ; [fn init: call_too_big_to_be_inlined_three_times_8]: allocate: locals 88 byte(s), call args 0 slot(s) +move $r0 $$reta ; [fn init: call_too_big_to_be_inlined_three_times_8]: save return address +jal $$reta $pc i53 ; [call: too_big_to_be_inlined_9]: call function +jal $$reta $pc i52 ; [call: too_big_to_be_inlined_9]: call function +sw $$locbase $zero i4 ; store word movi $r1 i10 ; initialize constant into register -sw $$locbase $r1 i1 ; store word -lw $r1 $$locbase i0 ; load word -lw $r2 $$locbase i1 ; load word +sw $$locbase $r1 i5 ; store word +lw $r1 $$locbase i4 ; load word +lw $r2 $$locbase i5 ; load word lt $r1 $r1 $r2 jnzf $r1 $zero i1 -jmpf $zero i7 -sw $$locbase $one i2 ; store word -lw $r1 $$locbase i0 ; load word -lw $r2 $$locbase i2 ; load word +jmpf $zero i39 +sw $$locbase $one i6 ; store word +lw $r1 $$locbase i4 ; load word +lw $r2 $$locbase i6 ; load word add $r1 $r1 $r2 -sw $$locbase $r1 i0 ; store word -jal $$reta $pc i6 ; [call: too_big_to_be_inlined_9]: call function -jmpb $zero i12 -cfsi i24 ; [fn end: simple_while_2_8] free: locals 24 byte(s), call args 0 slot(s) -move $$reta $r0 ; [fn end: simple_while_2_8] restore return address -poph i531456 ; [fn end: simple_while_2_8]: restore used high registers 40..64 -jal $zero $$reta i0 ; [fn end: simple_while_2_8] return from call +sw $$locbase $r1 i4 ; store word +sw $$locbase $one i10 ; store word +sw $$locbase $one i8 ; store word +lw $r1 $$locbase i10 ; load word +lw $r2 $$locbase i8 ; load word +eq $r1 $r1 $r2 +addi $r2 $$locbase i16 ; get offset to local __ptr bool +sb $r2 $r1 i0 ; store byte +addi $r1 $$locbase i16 ; get offset to local __ptr bool +lb $r1 $r1 i0 ; load byte +eq $r1 $r1 $zero +jnzf $r1 $zero i18 +sw $$locbase $one i9 ; store word +sw $$locbase $one i7 ; store word +lw $r1 $$locbase i9 ; load word +lw $r2 $$locbase i7 ; load word +eq $r1 $r1 $r2 +addi $r2 $$locbase i24 ; get offset to local __ptr bool +sb $r2 $r1 i0 ; store byte +addi $r1 $$locbase i24 ; get offset to local __ptr bool +lb $r1 $r1 i0 ; load byte +eq $r1 $r1 $zero +jnzf $r1 $zero i1 +jmpb $zero i33 +addr $r0 data_NonConfigurable_0; get std::error_signals::FAILED_ASSERT_SIGNAL's address in data section +addi $r1 $$locbase i8 ; get offset to local __ptr u64 +mcpi $r1 $r0 i8 ; copy memory +lw $r0 $$locbase i1 ; load word +rvrt $r0 +addr $r0 data_NonConfigurable_0; get std::error_signals::FAILED_ASSERT_SIGNAL's address in data section +mcpi $$locbase $r0 i8 ; copy memory +lw $r0 $$locbase i0 ; load word +rvrt $r0 +cfsi i88 ; [fn end: call_too_big_to_be_inlined_three_times_8] free: locals 88 byte(s), call args 0 slot(s) +move $$reta $r0 ; [fn end: call_too_big_to_be_inlined_three_times_8] restore return address +poph i531456 ; [fn end: call_too_big_to_be_inlined_three_times_8]: restore used high registers 40..64 +jal $zero $$reta i0 ; [fn end: call_too_big_to_be_inlined_three_times_8] return from call diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/stdlib/vec/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/stdlib/vec/stdout.snap index d1ab953dc25..b95f2d8874a 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/stdlib/vec/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/stdlib/vec/stdout.snap @@ -7,13 +7,13 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/stdlib/vec Compiling library std (sway-lib-std) Compiling script vec (test/src/e2e_vm_tests/test_programs/should_pass/stdlib/vec) - Finished debug [unoptimized + fuel] target(s) [155.208 KB] in ??? + Finished debug [unoptimized + fuel] target(s) [155.464 KB] in ??? Running 2 tests, filtered 0 tests tested -- vec - test test_main ... ok (???, 193385 gas) - test test_zst ... ok (???, 11580 gas) + test test_main ... ok (???, 192273 gas) + test test_zst ... ok (???, 11405 gas) test result: OK. 2 passed; 0 failed; finished in ??? diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/stdlib/vec_encoding_decoding/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/stdlib/vec_encoding_decoding/stdout.snap index 13df4ed4863..2884e3ce299 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/stdlib/vec_encoding_decoding/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/stdlib/vec_encoding_decoding/stdout.snap @@ -7,27 +7,27 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/stdlib/vec_encoding_decoding Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-vec) Compiling script vec_encoding_decoding (test/src/e2e_vm_tests/test_programs/should_pass/stdlib/vec_encoding_decoding) - Finished release [optimized + fuel] target(s) [10.744 KB] in ??? + Finished release [optimized + fuel] target(s) [11.136 KB] in ??? Running 6 tests, filtered 0 tests tested -- vec_encoding_decoding - test vec_trivial ... ok (???, 2904 gas) + test vec_trivial ... ok (???, 2919 gas) decoded log values: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], log rb: 15402277555065905665 - test nested_vec_trivial ... ok (???, 19431 gas) + test nested_vec_trivial ... ok (???, 19243 gas) decoded log values: [[], [0], [0, 1], [0, 1, 2], [0, 1, 2, 3], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4, 5], [0, 1, 2, 3, 4, 5, 6], [0, 1, 2, 3, 4, 5, 6, 7], [0, 1, 2, 3, 4, 5, 6, 7, 8]], log rb: 7518769745117093018 - test vec_non_trivial ... ok (???, 7028 gas) + test vec_non_trivial ... ok (???, 7267 gas) decoded log values: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], log rb: 1424139416812312134 - test nested_vec_non_trivial ... ok (???, 36229 gas) + test nested_vec_non_trivial ... ok (???, 37841 gas) decoded log values: [[], [0], [0, 1], [0, 1, 2], [0, 1, 2, 3], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4, 5], [0, 1, 2, 3, 4, 5, 6], [0, 1, 2, 3, 4, 5, 6, 7], [0, 1, 2, 3, 4, 5, 6, 7, 8]], log rb: 16171443785104013487 - test vec_encode_zst ... ok (???, 2750 gas) + test vec_encode_zst ... ok (???, 2792 gas) decoded log values: [(), (), (), (), (), (), (), (), (), ()], log rb: 7172587179247292377 - test nested_vec_zst ... ok (???, 18906 gas) + test nested_vec_zst ... ok (???, 18977 gas) decoded log values: [[], [()], [(), ()], [(), (), ()], [(), (), (), ()], [(), (), (), (), ()], [(), (), (), (), (), ()], [(), (), (), (), (), (), ()], [(), (), (), (), (), (), (), ()], [(), (), (), (), (), (), (), (), ()]], log rb: 15095959372321865352 diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call/stdout.snap index 69aa32b9105..b9c0c4e7826 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call/stdout.snap @@ -7,15 +7,20 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-vec) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) +<<<<<<< HEAD <<<<<<< HEAD Finished release [optimized + fuel] target(s) [19.408 KB] in ??? ======= Finished release [optimized + fuel] target(s) [24.824 KB] in ??? >>>>>>> a94b693b4 (update tests) +======= + Finished release [optimized + fuel] target(s) [24.944 KB] in ??? +>>>>>>> 2c082a4be (update tests) Running 33 tests, filtered 0 tests tested -- const_of_contract_call +<<<<<<< HEAD <<<<<<< HEAD test cost_of_in_bool ... ok (???, 1736 gas) test cost_of_in_u8 ... ok (???, 1704 gas) @@ -85,6 +90,41 @@ tested -- const_of_contract_call test order_args_without_trivial_enum ... ok (???, 3248 gas) test order_args_with_trivial_enum ... ok (???, 3460 gas) >>>>>>> a94b693b4 (update tests) +======= + test cost_of_in_bool ... ok (???, 1806 gas) + test cost_of_in_u8 ... ok (???, 1774 gas) + test cost_of_in_u16 ... ok (???, 1939 gas) + test cost_of_in_u32 ... ok (???, 2032 gas) + test cost_of_in_u64 ... ok (???, 1640 gas) + test cost_of_in_u256 ... ok (???, 1670 gas) + test cost_of_in_b256 ... ok (???, 1660 gas) + test cost_of_in_str_0 ... ok (???, 2012 gas) + test cost_of_in_str_1 ... ok (???, 2142 gas) + test cost_of_in_str_8 ... ok (???, 2149 gas) + test cost_of_in_str_16 ... ok (???, 2146 gas) + test cost_of_in_str_32 ... ok (???, 2156 gas) + test cost_of_in_array_0 ... ok (???, 1609 gas) + test cost_of_in_array_1 ... ok (???, 1669 gas) + test cost_of_in_array_8 ... ok (???, 2179 gas) + test cost_of_in_array_16 ... ok (???, 1709 gas) + test cost_of_in_array_32 ... ok (???, 1758 gas) + test cost_of_in_array_64 ... ok (???, 1851 gas) + test cost_of_in_tuple_0 ... ok (???, 1622 gas) + test cost_of_in_tuple_1 ... ok (???, 1684 gas) + test cost_of_in_tuple_2 ... ok (???, 1702 gas) + test cost_of_in_tuple_3 ... ok (???, 1710 gas) + test cost_of_in_tuple_4 ... ok (???, 1717 gas) + test in_struct_u64 ... ok (???, 1672 gas) + test in_struct_u64_u64 ... ok (???, 1697 gas) + test in_struct_u64_u64_u64 ... ok (???, 1713 gas) + test in_enum_u64 ... ok (???, 1752 gas) + test in_enum_u64_u64 ... ok (???, 1754 gas) + test in_enum_u64_u64_u64 ... ok (???, 1767 gas) + test in_vec_trivial ... ok (???, 2918 gas) + test in_vec_not_trivial ... ok (???, 5940 gas) + test order_args_without_trivial_enum ... ok (???, 3250 gas) + test order_args_with_trivial_enum ... ok (???, 3462 gas) +>>>>>>> 2c082a4be (update tests) test result: OK. 33 passed; 0 failed; finished in ??? From ebbb6b0fff042a979ffdb0cd38db8f66adf60fb7 Mon Sep 17 00:00:00 2001 From: xunilrj Date: Wed, 10 Jun 2026 16:35:33 -0300 Subject: [PATCH 15/42] update tests --- sway-ir/src/optimize/inline.rs | 2 +- .../language/array/array_repeat/stdout.snap | 11 + .../language/for_loops/stdout.snap | 246 +++++++----------- .../language/intrinsics/dbg/stdout.snap | 10 +- .../intrinsics/dbg_release/stdout.snap | 4 +- .../language/while_loops/stdout.snap | 127 ++------- .../should_pass/stdlib/vec/stdout.snap | 6 +- .../stdlib/vec_encoding_decoding/stdout.snap | 14 +- .../const_of_contract_call/stdout.snap | 10 + 9 files changed, 156 insertions(+), 274 deletions(-) diff --git a/sway-ir/src/optimize/inline.rs b/sway-ir/src/optimize/inline.rs index 3b502d53e91..8d92e1305ea 100644 --- a/sway-ir/src/optimize/inline.rs +++ b/sway-ir/src/optimize/inline.rs @@ -148,7 +148,7 @@ pub fn fn_inline( let la: &LoopAnalysis = analyses.get_analysis_result(call_site_fn); if let Some(block) = call_site.get_parent_block(ctx) { if la.is_inside_loop(&block) { - threshold *= 2; + threshold = MAX_CALLEE_INSTRUCTION_COUNT_TO_INLINE; } } diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/array/array_repeat/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/array/array_repeat/stdout.snap index cb035abca87..734f8dc3ef9 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/array/array_repeat/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/array/array_repeat/stdout.snap @@ -1286,6 +1286,7 @@ output: Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-assert) Compiling script array_repeat (test/src/e2e_vm_tests/test_programs/should_pass/language/array/array_repeat) <<<<<<< HEAD +<<<<<<< HEAD <<<<<<< HEAD Finished release [optimized + fuel] target(s) [1.944 KB] in ??? script array_repeat @@ -1303,10 +1304,17 @@ output: Bytecode size: 2152 bytes (2.152 KB) Bytecode hash: 0x77810750c970c763f9a0d60dba74f0cc41bc81a61944521b3e8c305234423f8b >>>>>>> 2c082a4be (update tests) +======= + Finished release [optimized + fuel] target(s) [2.04 KB] in ??? + script array_repeat + Bytecode size: 2040 bytes (2.04 KB) + Bytecode hash: 0x4f9edafab44fe06af95d8e015a91850559d840696e05d6ae80913d7873a73d54 +>>>>>>> b4cdcf291 (update tests) Running 1 test, filtered 0 tests tested -- array_repeat +<<<<<<< HEAD <<<<<<< HEAD <<<<<<< HEAD test test_array_repeat_zero ... ok (???, 2624891 gas) @@ -1316,6 +1324,9 @@ tested -- array_repeat ======= test test_array_repeat_zero ... ok (???, 2887761 gas) >>>>>>> 2c082a4be (update tests) +======= + test test_array_repeat_zero ... ok (???, 2887161 gas) +>>>>>>> b4cdcf291 (update tests) test result: OK. 1 passed; 0 failed; finished in ??? diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/for_loops/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/for_loops/stdout.snap index 9c3fff130fa..c64f61dfd48 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/for_loops/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/for_loops/stdout.snap @@ -6,137 +6,95 @@ source: test/src/snapshot/mod.rs fn just_for_loop_15(vector: __ptr { { ptr, u64 }, u64 }) -> () { local mut { { { ptr, u64 }, u64 }, u64 } __for_iterable_2 local mut { u64, ( () | u64 ) } __for_value_opt_1 - local { u64, ( () | u64 ) } __matched_value_4 local { u64, ( () | u64 ) } __ret_val local { { { ptr, u64 }, u64 }, u64 } __struct_init_0 - local u64 code_ - local u64 code_0 - local bool condition_ local mut u64 i + local u64 n local u64 other_ local u64 other_0 local u64 other_1 - local u64 other_2 entry(vector: __ptr { { ptr, u64 }, u64 }): - v1342v1 = get_local __ptr u64, i - v1343v1 = const u64 0 - store v1343v1 to v1342v1 - v1345v1 = get_local __ptr { { { ptr, u64 }, u64 }, u64 }, __struct_init_0 - v1346v1 = const u64 0 - v1347v1 = get_elem_ptr v1345v1, __ptr { { ptr, u64 }, u64 }, v1346v1 - mem_copy_val v1347v1, vector - v1349v1 = const u64 1 - v1350v1 = get_elem_ptr v1345v1, __ptr u64, v1349v1 - v1351v1 = const u64 0 - store v1351v1 to v1350v1 - v1353v1 = get_local __ptr { { { ptr, u64 }, u64 }, u64 }, __for_iterable_2 - mem_copy_val v1353v1, v1345v1 + v1132v1 = get_local __ptr u64, i + v1133v1 = const u64 0 + store v1133v1 to v1132v1 + v1135v1 = get_local __ptr { { { ptr, u64 }, u64 }, u64 }, __struct_init_0 + v1136v1 = const u64 0 + v1137v1 = get_elem_ptr v1135v1, __ptr { { ptr, u64 }, u64 }, v1136v1 + mem_copy_val v1137v1, vector + v1139v1 = const u64 1 + v1140v1 = get_elem_ptr v1135v1, __ptr u64, v1139v1 + v1141v1 = const u64 0 + store v1141v1 to v1140v1 + v1143v1 = get_local __ptr { { { ptr, u64 }, u64 }, u64 }, __for_iterable_2 + mem_copy_val v1143v1, v1135v1 br while() while(): - v1356v1 = const bool true - cbr v1356v1, while_body(), end_while() + v1146v1 = const bool true + cbr v1146v1, while_body(), end_while() while_body(): - v1358v1 = get_local __ptr { { { ptr, u64 }, u64 }, u64 }, __for_iterable_2 - v1359v1 = get_local __ptr { u64, ( () | u64 ) }, __ret_val - v1360v1 = call next_17(v1358v1, v1359v1) - v1361v1 = get_local __ptr { u64, ( () | u64 ) }, __for_value_opt_1 - mem_copy_val v1361v1, v1359v1 - v1363v1 = get_local __ptr { u64, ( () | u64 ) }, __for_value_opt_1 - v1364v1 = const u64 0 - v1365v1 = get_elem_ptr v1363v1, __ptr u64, v1364v1 - v1366v1 = get_local __ptr u64, other_ - v1367v1 = const u64 1 - store v1367v1 to v1366v1 - v1369v1 = load v1365v1 - v1370v1 = get_local __ptr u64, other_ - v1371v1 = load v1370v1 - v1372v1 = cmp eq v1369v1 v1371v1 - v1373v1 = const bool false - cbr v1372v1, is_none_22_block2(v1373v1), is_none_22_block1() + v1148v1 = get_local __ptr { { { ptr, u64 }, u64 }, u64 }, __for_iterable_2 + v1149v1 = get_local __ptr { u64, ( () | u64 ) }, __ret_val + v1150v1 = call next_17(v1148v1, v1149v1) + v1151v1 = get_local __ptr { u64, ( () | u64 ) }, __for_value_opt_1 + mem_copy_val v1151v1, v1149v1 + v1153v1 = get_local __ptr { u64, ( () | u64 ) }, __for_value_opt_1 + v1154v1 = const u64 0 + v1155v1 = get_elem_ptr v1153v1, __ptr u64, v1154v1 + v1156v1 = get_local __ptr u64, other_ + v1157v1 = const u64 1 + store v1157v1 to v1156v1 + v1159v1 = load v1155v1 + v1160v1 = get_local __ptr u64, other_ + v1161v1 = load v1160v1 + v1162v1 = cmp eq v1159v1 v1161v1 + v1163v1 = const bool false + cbr v1162v1, is_none_22_block2(v1163v1), is_none_22_block1() is_none_22_block1(): - v1375v1 = const bool true - br is_none_22_block2(v1375v1) + v1165v1 = const bool true + br is_none_22_block2(v1165v1) - is_none_22_block2(v1341v1: bool): - cbr v1341v1, end_while(), block1() + is_none_22_block2(v1131v1: bool): + cbr v1131v1, end_while(), block1() block1(): - v1378v1 = get_local __ptr { u64, ( () | u64 ) }, __for_value_opt_1 - v1379v1 = get_local __ptr { u64, ( () | u64 ) }, __matched_value_4 - mem_copy_val v1379v1, v1378v1 - v1381v1 = const u64 0 - v1382v1 = get_elem_ptr v1378v1, __ptr u64, v1381v1 - v1383v1 = get_local __ptr u64, other_0 - v1384v1 = const u64 1 - store v1384v1 to v1383v1 - v1386v1 = load v1382v1 - v1387v1 = get_local __ptr u64, other_0 - v1388v1 = load v1387v1 - v1389v1 = cmp eq v1386v1 v1388v1 - cbr v1389v1, unwrap_23_block0(), unwrap_23_block1() - - unwrap_23_block0(): - v1391v1 = get_local __ptr { u64, ( () | u64 ) }, __matched_value_4 - v1392v1 = const u64 1 - v1393v1 = const u64 1 - v1394v1 = get_elem_ptr v1391v1, __ptr u64, v1392v1, v1393v1 - v1395v1 = get_local __ptr u64, i - v1396v1 = load v1394v1 - v1397v1 = load v1395v1 - v1398v1 = cmp eq v1396v1 v1397v1 - v1399v1 = get_local __ptr bool, condition_ - store v1398v1 to v1399v1 - v1401v1 = get_local __ptr bool, condition_ - v1402v1 = load v1401v1 - v1403v1 = const bool false - v1404v1 = cmp eq v1402v1 v1403v1 - cbr v1404v1, assert_25_block0(), assert_25_block1() - - unwrap_23_block1(): - v1406v1 = get_local __ptr u64, code_0 - v1407v1 = const u64 0 - store v1407v1 to v1406v1 - v1409v1 = get_local __ptr u64, code_0 - v1410v1 = load v1409v1 - revert v1410v1 - - assert_25_block0(): - v1412v1 = get_global __ptr u64, std::error_signals::FAILED_ASSERT_SIGNAL - v1413v1 = get_local __ptr u64, code_ - mem_copy_val v1413v1, v1412v1 - v1415v1 = get_local __ptr u64, code_ - v1416v1 = load v1415v1 - revert v1416v1 - - assert_25_block1(): - v1418v1 = get_local __ptr u64, i - v1419v1 = get_local __ptr u64, other_1 - v1420v1 = const u64 1 - store v1420v1 to v1419v1 - v1422v1 = load v1418v1 - v1423v1 = get_local __ptr u64, other_1 - v1424v1 = load v1423v1 - v1425v1 = add v1422v1, v1424v1 - v1426v1 = get_local __ptr u64, i - store v1425v1 to v1426v1 + v1168v1 = get_local __ptr { u64, ( () | u64 ) }, __for_value_opt_1 + v1169v1 = call unwrap_23(v1168v1) + v1170v1 = get_local __ptr u64, n + store v1169v1 to v1170v1 + v1172v1 = get_local __ptr u64, i + v1173v1 = get_local __ptr u64, n + v1174v1 = load v1173v1 + v1175v1 = load v1172v1 + v1176v1 = cmp eq v1174v1 v1175v1 + v1177v1 = call assert_25(v1176v1) + v1178v1 = get_local __ptr u64, i + v1179v1 = get_local __ptr u64, other_0 + v1180v1 = const u64 1 + store v1180v1 to v1179v1 + v1182v1 = load v1178v1 + v1183v1 = get_local __ptr u64, other_0 + v1184v1 = load v1183v1 + v1185v1 = add v1182v1, v1184v1 + v1186v1 = get_local __ptr u64, i + store v1185v1 to v1186v1 br while() end_while(): - v1429v1 = get_local __ptr u64, i - v1430v1 = get_local __ptr u64, other_2 - v1431v1 = const u64 5 - store v1431v1 to v1430v1 - v1433v1 = load v1429v1 - v1434v1 = get_local __ptr u64, other_2 - v1435v1 = load v1434v1 - v1436v1 = cmp eq v1433v1 v1435v1 - v1437v1 = call assert_25(v1436v1) - v1438v1 = const unit () - ret () v1438v1 + v1189v1 = get_local __ptr u64, i + v1190v1 = get_local __ptr u64, other_1 + v1191v1 = const u64 5 + store v1191v1 to v1190v1 + v1193v1 = load v1189v1 + v1194v1 = get_local __ptr u64, other_1 + v1195v1 = load v1194v1 + v1196v1 = cmp eq v1193v1 v1195v1 + v1197v1 = call assert_25(v1196v1) + v1198v1 = const unit () + ret () v1198v1 } @@ -146,67 +104,51 @@ fn just_for_loop_15(vector: __ptr { { ptr, u64 }, u64 }) -> () { pshh i531456 ; [fn init: just_for_loop_15]: push used high registers 40..64 move $$locbase $sp ; [fn init: just_for_loop_15]: set locals base register -cfei i176 ; [fn init: just_for_loop_15]: allocate: locals 176 byte(s), call args 0 slot(s) +cfei i136 ; [fn init: just_for_loop_15]: allocate: locals 136 byte(s), call args 0 slot(s) move $r0 $$arg0 ; [fn init: just_for_loop_15]: copy argument 0 (vector) move $r1 $$reta ; [fn init: just_for_loop_15]: save return address -sw $$locbase $zero i17 ; store word -addi $r2 $$locbase i80 ; get offset to local __ptr { { { ptr, u64 }, u64 }, u64 } +sw $$locbase $zero i12 ; store word +addi $r2 $$locbase i64 ; get offset to local __ptr { { { ptr, u64 }, u64 }, u64 } mcpi $r2 $r0 i24 ; copy memory -sw $$locbase $zero i13 ; store word +sw $$locbase $zero i11 ; store word mcpi $$locbase $r2 i32 ; copy memory -addi $r0 $$locbase i64 ; get offset to local __ptr { u64, ( () | u64 ) } +addi $r0 $$locbase i48 ; get offset to local __ptr { u64, ( () | u64 ) } move $$arg0 $$locbase ; [call: next_17]: pass argument 0 move $$arg1 $r0 ; [call: next_17]: pass argument 1 -jal $$reta $pc i54 ; [call: next_17]: call function +jal $$reta $pc i37 ; [call: next_17]: call function addi $r2 $$locbase i32 ; get offset to local __ptr { u64, ( () | u64 ) } mcpi $r2 $r0 i16 ; copy memory -sw $$locbase $one i18 ; store word +sw $$locbase $one i14 ; store word lw $r0 $$locbase i4 ; load word -lw $r2 $$locbase i18 ; load word +lw $r2 $$locbase i14 ; load word eq $r0 $r0 $r2 movi $r2 i0 ; move parameter from branch to block argument jnzf $r0 $zero i1 movi $r2 i1 ; move parameter from branch to block argument -jnzf $r2 $zero i32 +jnzf $r2 $zero i15 addi $r0 $$locbase i32 ; get offset to local __ptr { u64, ( () | u64 ) } -addi $r2 $$locbase i48 ; get offset to local __ptr { u64, ( () | u64 ) } -mcpi $r2 $r0 i16 ; copy memory -sw $$locbase $one i19 ; store word -lw $r0 $$locbase i4 ; load word -lw $r2 $$locbase i19 ; load word +move $$arg0 $r0 ; [call: unwrap_23]: pass argument 0 +jal $$reta $pc i110 ; [call: unwrap_23]: call function +sw $$locbase $$retv i13 ; store word +lw $r0 $$locbase i13 ; load word +lw $r2 $$locbase i12 ; load word eq $r0 $r0 $r2 -jnzf $r0 $zero i3 -sw $$locbase $zero i15 ; store word -lw $r0 $$locbase i15 ; load word -rvrt $r0 -lw $r0 $$locbase i7 ; load word -lw $r2 $$locbase i17 ; load word -eq $r0 $r0 $r2 -addi $r2 $$locbase i128 ; get offset to local __ptr bool -sb $r2 $r0 i0 ; store byte -addi $r0 $$locbase i128 ; get offset to local __ptr bool -lb $r0 $r0 i0 ; load byte -eq $r0 $r0 $zero -jnzf $r0 $zero i6 -sw $$locbase $one i20 ; store word -lw $r0 $$locbase i17 ; load word -lw $r2 $$locbase i20 ; load word +move $$arg0 $r0 ; [call: assert_25]: pass argument 0 +jal $$reta $pc i121 ; [call: assert_25]: call function +sw $$locbase $one i15 ; store word +lw $r0 $$locbase i12 ; load word +lw $r2 $$locbase i15 ; load word add $r0 $r0 $r2 -sw $$locbase $r0 i17 ; store word -jmpb $zero i38 -addr $r0 data_NonConfigurable_0; get std::error_signals::FAILED_ASSERT_SIGNAL's address in data section -addi $r1 $$locbase i112 ; get offset to local __ptr u64 -mcpi $r1 $r0 i8 ; copy memory -lw $r0 $$locbase i14 ; load word -rvrt $r0 +sw $$locbase $r0 i12 ; store word +jmpb $zero i27 movi $r0 i5 ; initialize constant into register -sw $$locbase $r0 i21 ; store word -lw $r0 $$locbase i17 ; load word -lw $r2 $$locbase i21 ; load word +sw $$locbase $r0 i16 ; store word +lw $r0 $$locbase i12 ; load word +lw $r2 $$locbase i16 ; load word eq $r0 $r0 $r2 move $$arg0 $r0 ; [call: assert_25]: pass argument 0 -jal $$reta $pc i80 ; [call: assert_25]: call function -cfsi i176 ; [fn end: just_for_loop_15] free: locals 176 byte(s), call args 0 slot(s) +jal $$reta $pc i108 ; [call: assert_25]: call function +cfsi i136 ; [fn end: just_for_loop_15] free: locals 136 byte(s), call args 0 slot(s) move $$reta $r1 ; [fn end: just_for_loop_15] restore return address poph i531456 ; [fn end: just_for_loop_15]: restore used high registers 40..64 jal $zero $$reta i0 ; [fn end: just_for_loop_15] return from call diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg/stdout.snap index e97d1a29f75..da104459687 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg/stdout.snap @@ -61,8 +61,6 @@ ecal $r1 $r0 $zero $zero ; ecal id fd zero zero ecal $r1 $r0 $zero $zero ; ecal id fd zero zero ecal $r1 $r0 $zero $zero ; ecal id fd zero zero ecal $r1 $r0 $zero $zero ; ecal id fd zero zero -ecal $r4 $r0 $r1 $r2 ; ecal id fd buf count -ecal $r3 $r0 $r1 $r2 ; ecal id fd buf count ecal $r3 $r0 $r1 $r2 ; ecal id fd buf count > forc build --path test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg --release --asm final | sub ecal @@ -74,6 +72,7 @@ output: Compiling library std (sway-lib-std) Compiling script dbg (test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg) <<<<<<< HEAD +<<<<<<< HEAD <<<<<<< HEAD Finished debug [unoptimized + fuel] target(s) [36.48 KB] in ??? ======= @@ -82,10 +81,14 @@ output: ======= Finished debug [unoptimized + fuel] target(s) [37.08 KB] in ??? >>>>>>> 2c082a4be (update tests) +======= + Finished debug [unoptimized + fuel] target(s) [36.664 KB] in ??? +>>>>>>> b4cdcf291 (update tests) Running 1 test, filtered 0 tests tested -- dbg +<<<<<<< HEAD <<<<<<< HEAD <<<<<<< HEAD test call_main ... ok (???, 117840 gas) @@ -95,6 +98,9 @@ tested -- dbg ======= test call_main ... ok (???, 131162 gas) >>>>>>> 2c082a4be (update tests) +======= + test call_main ... ok (???, 131571 gas) +>>>>>>> b4cdcf291 (update tests) debug output: [src/main.sw:13:13] () = () [src/main.sw:15:13] true = true diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg_release/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg_release/stdout.snap index 2b7f0e7ab3a..756047dde0a 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg_release/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg_release/stdout.snap @@ -15,7 +15,6 @@ ecal $r1 $r0 $zero $zero ; ecal id fd zero zero ecal $r1 $r0 $zero $zero ; ecal id fd zero zero ecal $r1 $r0 $zero $zero ; ecal id fd zero zero ecal $r1 $r0 $zero $zero ; ecal id fd zero zero -ecal $r0 $r1 $r2 $r4 ; ecal id fd buf count ecal $r3 $r0 $r1 $r2 ; ecal id fd buf count > forc build --path test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg_release --release --asm final | sub ecal @@ -43,10 +42,13 @@ ecal $r0 $r1 $zero $zero ; ecal id fd zero zero ecal $r0 $r1 $zero $zero ; ecal id fd zero zero ecal $r0 $r1 $zero $zero ; ecal id fd zero zero <<<<<<< HEAD +<<<<<<< HEAD >>>>>>> a94b693b4 (update tests) ======= ecal $r5 $r6 $r2 $r4 ; ecal id fd buf count >>>>>>> 2c082a4be (update tests) +======= +>>>>>>> b4cdcf291 (update tests) ecal $r2 $r3 $r0 $r1 ; ecal id fd buf count ecal $r2 $r3 $r0 $r1 ; ecal id fd buf count ecal $r3 $r4 $$locbase $one ; ecal id fd buf count diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/while_loops/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/while_loops/stdout.snap index c34dd584521..5605c258de5 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/while_loops/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/while_loops/stdout.snap @@ -4,17 +4,9 @@ source: test/src/snapshot/mod.rs > forc build --path test/src/e2e_vm_tests/test_programs/should_pass/language/while_loops --ir final --asm final | filter-fn while_loops call_too_big_to_be_inlined_three_times fn call_too_big_to_be_inlined_three_times_8() -> () { - local u64 code_ - local u64 code_0 - local bool condition_ - local bool condition_0 local mut u64 counter local u64 other_ local u64 other_0 - local u64 other_00 - local u64 other_1 - local u64 self_00 - local u64 self_1 entry(): v221v1 = call too_big_to_be_inlined_9() @@ -46,63 +38,12 @@ fn call_too_big_to_be_inlined_three_times_8() -> () { v243v1 = add v240v1, v242v1 v244v1 = get_local __ptr u64, counter store v243v1 to v244v1 - v246v1 = get_local __ptr u64, self_1 - v247v1 = const u64 1 - store v247v1 to v246v1 - v249v1 = get_local __ptr u64, other_1 - v250v1 = const u64 1 - store v250v1 to v249v1 - v252v1 = get_local __ptr u64, self_1 - v253v1 = load v252v1 - v254v1 = get_local __ptr u64, other_1 - v255v1 = load v254v1 - v256v1 = cmp eq v253v1 v255v1 - v257v1 = get_local __ptr bool, condition_ - store v256v1 to v257v1 - v259v1 = get_local __ptr bool, condition_ - v260v1 = load v259v1 - v261v1 = const bool false - v262v1 = cmp eq v260v1 v261v1 - cbr v262v1, assert_4_block0(), assert_4_block1() - - assert_4_block0(): - v264v1 = get_global __ptr u64, std::error_signals::FAILED_ASSERT_SIGNAL - v265v1 = get_local __ptr u64, code_ - mem_copy_val v265v1, v264v1 - v267v1 = get_local __ptr u64, code_ - v268v1 = load v267v1 - revert v268v1 - - assert_4_block1(): - v270v1 = get_local __ptr u64, self_00 - v271v1 = const u64 1 - store v271v1 to v270v1 - v273v1 = get_local __ptr u64, other_00 - v274v1 = const u64 1 - store v274v1 to v273v1 - v276v1 = get_local __ptr u64, self_00 - v277v1 = load v276v1 - v278v1 = get_local __ptr u64, other_00 - v279v1 = load v278v1 - v280v1 = cmp eq v277v1 v279v1 - v281v1 = get_local __ptr bool, condition_0 - store v280v1 to v281v1 - v283v1 = get_local __ptr bool, condition_0 - v284v1 = load v283v1 - v285v1 = cmp eq v284v1 v261v1 - cbr v285v1, assert_4_block05(), while() - - assert_4_block05(): - v287v1 = get_global __ptr u64, std::error_signals::FAILED_ASSERT_SIGNAL - v288v1 = get_local __ptr u64, code_0 - mem_copy_val v288v1, v287v1 - v290v1 = get_local __ptr u64, code_0 - v291v1 = load v290v1 - revert v291v1 + v246v1 = call too_big_to_be_inlined_9() + br while() end_while(): - v293v1 = const unit () - ret () v293v1 + v248v1 = const unit () + ret () v248v1 } @@ -111,56 +52,26 @@ fn call_too_big_to_be_inlined_three_times_8() -> () { pshh i531456 ; [fn init: call_too_big_to_be_inlined_three_times_8]: push used high registers 40..64 move $$locbase $sp ; [fn init: call_too_big_to_be_inlined_three_times_8]: set locals base register -cfei i88 ; [fn init: call_too_big_to_be_inlined_three_times_8]: allocate: locals 88 byte(s), call args 0 slot(s) +cfei i24 ; [fn init: call_too_big_to_be_inlined_three_times_8]: allocate: locals 24 byte(s), call args 0 slot(s) move $r0 $$reta ; [fn init: call_too_big_to_be_inlined_three_times_8]: save return address -jal $$reta $pc i53 ; [call: too_big_to_be_inlined_9]: call function -jal $$reta $pc i52 ; [call: too_big_to_be_inlined_9]: call function -sw $$locbase $zero i4 ; store word +jal $$reta $pc i21 ; [call: too_big_to_be_inlined_9]: call function +jal $$reta $pc i20 ; [call: too_big_to_be_inlined_9]: call function +sw $$locbase $zero i0 ; store word movi $r1 i10 ; initialize constant into register -sw $$locbase $r1 i5 ; store word -lw $r1 $$locbase i4 ; load word -lw $r2 $$locbase i5 ; load word +sw $$locbase $r1 i1 ; store word +lw $r1 $$locbase i0 ; load word +lw $r2 $$locbase i1 ; load word lt $r1 $r1 $r2 jnzf $r1 $zero i1 -jmpf $zero i39 -sw $$locbase $one i6 ; store word -lw $r1 $$locbase i4 ; load word -lw $r2 $$locbase i6 ; load word +jmpf $zero i7 +sw $$locbase $one i2 ; store word +lw $r1 $$locbase i0 ; load word +lw $r2 $$locbase i2 ; load word add $r1 $r1 $r2 -sw $$locbase $r1 i4 ; store word -sw $$locbase $one i10 ; store word -sw $$locbase $one i8 ; store word -lw $r1 $$locbase i10 ; load word -lw $r2 $$locbase i8 ; load word -eq $r1 $r1 $r2 -addi $r2 $$locbase i16 ; get offset to local __ptr bool -sb $r2 $r1 i0 ; store byte -addi $r1 $$locbase i16 ; get offset to local __ptr bool -lb $r1 $r1 i0 ; load byte -eq $r1 $r1 $zero -jnzf $r1 $zero i18 -sw $$locbase $one i9 ; store word -sw $$locbase $one i7 ; store word -lw $r1 $$locbase i9 ; load word -lw $r2 $$locbase i7 ; load word -eq $r1 $r1 $r2 -addi $r2 $$locbase i24 ; get offset to local __ptr bool -sb $r2 $r1 i0 ; store byte -addi $r1 $$locbase i24 ; get offset to local __ptr bool -lb $r1 $r1 i0 ; load byte -eq $r1 $r1 $zero -jnzf $r1 $zero i1 -jmpb $zero i33 -addr $r0 data_NonConfigurable_0; get std::error_signals::FAILED_ASSERT_SIGNAL's address in data section -addi $r1 $$locbase i8 ; get offset to local __ptr u64 -mcpi $r1 $r0 i8 ; copy memory -lw $r0 $$locbase i1 ; load word -rvrt $r0 -addr $r0 data_NonConfigurable_0; get std::error_signals::FAILED_ASSERT_SIGNAL's address in data section -mcpi $$locbase $r0 i8 ; copy memory -lw $r0 $$locbase i0 ; load word -rvrt $r0 -cfsi i88 ; [fn end: call_too_big_to_be_inlined_three_times_8] free: locals 88 byte(s), call args 0 slot(s) +sw $$locbase $r1 i0 ; store word +jal $$reta $pc i6 ; [call: too_big_to_be_inlined_9]: call function +jmpb $zero i12 +cfsi i24 ; [fn end: call_too_big_to_be_inlined_three_times_8] free: locals 24 byte(s), call args 0 slot(s) move $$reta $r0 ; [fn end: call_too_big_to_be_inlined_three_times_8] restore return address poph i531456 ; [fn end: call_too_big_to_be_inlined_three_times_8]: restore used high registers 40..64 jal $zero $$reta i0 ; [fn end: call_too_big_to_be_inlined_three_times_8] return from call diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/stdlib/vec/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/stdlib/vec/stdout.snap index b95f2d8874a..d1ab953dc25 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/stdlib/vec/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/stdlib/vec/stdout.snap @@ -7,13 +7,13 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/stdlib/vec Compiling library std (sway-lib-std) Compiling script vec (test/src/e2e_vm_tests/test_programs/should_pass/stdlib/vec) - Finished debug [unoptimized + fuel] target(s) [155.464 KB] in ??? + Finished debug [unoptimized + fuel] target(s) [155.208 KB] in ??? Running 2 tests, filtered 0 tests tested -- vec - test test_main ... ok (???, 192273 gas) - test test_zst ... ok (???, 11405 gas) + test test_main ... ok (???, 193385 gas) + test test_zst ... ok (???, 11580 gas) test result: OK. 2 passed; 0 failed; finished in ??? diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/stdlib/vec_encoding_decoding/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/stdlib/vec_encoding_decoding/stdout.snap index 2884e3ce299..13df4ed4863 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/stdlib/vec_encoding_decoding/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/stdlib/vec_encoding_decoding/stdout.snap @@ -7,27 +7,27 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/stdlib/vec_encoding_decoding Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-vec) Compiling script vec_encoding_decoding (test/src/e2e_vm_tests/test_programs/should_pass/stdlib/vec_encoding_decoding) - Finished release [optimized + fuel] target(s) [11.136 KB] in ??? + Finished release [optimized + fuel] target(s) [10.744 KB] in ??? Running 6 tests, filtered 0 tests tested -- vec_encoding_decoding - test vec_trivial ... ok (???, 2919 gas) + test vec_trivial ... ok (???, 2904 gas) decoded log values: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], log rb: 15402277555065905665 - test nested_vec_trivial ... ok (???, 19243 gas) + test nested_vec_trivial ... ok (???, 19431 gas) decoded log values: [[], [0], [0, 1], [0, 1, 2], [0, 1, 2, 3], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4, 5], [0, 1, 2, 3, 4, 5, 6], [0, 1, 2, 3, 4, 5, 6, 7], [0, 1, 2, 3, 4, 5, 6, 7, 8]], log rb: 7518769745117093018 - test vec_non_trivial ... ok (???, 7267 gas) + test vec_non_trivial ... ok (???, 7028 gas) decoded log values: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], log rb: 1424139416812312134 - test nested_vec_non_trivial ... ok (???, 37841 gas) + test nested_vec_non_trivial ... ok (???, 36229 gas) decoded log values: [[], [0], [0, 1], [0, 1, 2], [0, 1, 2, 3], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4, 5], [0, 1, 2, 3, 4, 5, 6], [0, 1, 2, 3, 4, 5, 6, 7], [0, 1, 2, 3, 4, 5, 6, 7, 8]], log rb: 16171443785104013487 - test vec_encode_zst ... ok (???, 2792 gas) + test vec_encode_zst ... ok (???, 2750 gas) decoded log values: [(), (), (), (), (), (), (), (), (), ()], log rb: 7172587179247292377 - test nested_vec_zst ... ok (???, 18977 gas) + test nested_vec_zst ... ok (???, 18906 gas) decoded log values: [[], [()], [(), ()], [(), (), ()], [(), (), (), ()], [(), (), (), (), ()], [(), (), (), (), (), ()], [(), (), (), (), (), (), ()], [(), (), (), (), (), (), (), ()], [(), (), (), (), (), (), (), (), ()]], log rb: 15095959372321865352 diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call/stdout.snap index b9c0c4e7826..81ae673dce4 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call/stdout.snap @@ -8,6 +8,7 @@ output: Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-vec) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) <<<<<<< HEAD +<<<<<<< HEAD <<<<<<< HEAD Finished release [optimized + fuel] target(s) [19.408 KB] in ??? ======= @@ -16,10 +17,14 @@ output: ======= Finished release [optimized + fuel] target(s) [24.944 KB] in ??? >>>>>>> 2c082a4be (update tests) +======= + Finished release [optimized + fuel] target(s) [24.824 KB] in ??? +>>>>>>> b4cdcf291 (update tests) Running 33 tests, filtered 0 tests tested -- const_of_contract_call +<<<<<<< HEAD <<<<<<< HEAD <<<<<<< HEAD test cost_of_in_bool ... ok (???, 1736 gas) @@ -56,6 +61,8 @@ tested -- const_of_contract_call test order_args_without_trivial_enum ... ok (???, 3049 gas) test order_args_with_trivial_enum ... ok (???, 3213 gas) ======= +======= +>>>>>>> b4cdcf291 (update tests) test cost_of_in_bool ... ok (???, 1804 gas) test cost_of_in_u8 ... ok (???, 1772 gas) test cost_of_in_u16 ... ok (???, 1937 gas) @@ -89,6 +96,7 @@ tested -- const_of_contract_call test in_vec_not_trivial ... ok (???, 6198 gas) test order_args_without_trivial_enum ... ok (???, 3248 gas) test order_args_with_trivial_enum ... ok (???, 3460 gas) +<<<<<<< HEAD >>>>>>> a94b693b4 (update tests) ======= test cost_of_in_bool ... ok (???, 1806 gas) @@ -125,6 +133,8 @@ tested -- const_of_contract_call test order_args_without_trivial_enum ... ok (???, 3250 gas) test order_args_with_trivial_enum ... ok (???, 3462 gas) >>>>>>> 2c082a4be (update tests) +======= +>>>>>>> b4cdcf291 (update tests) test result: OK. 33 passed; 0 failed; finished in ??? From 7328702d29b980dddf1861d2a41ea9f5e2550544 Mon Sep 17 00:00:00 2001 From: xunilrj Date: Wed, 10 Jun 2026 18:10:40 -0300 Subject: [PATCH 16/42] fix justfile for mac --- sway-ir/src/optimize/inline.rs | 2 +- .../language/array/array_repeat/stdout.snap | 11 + .../language/for_loops/stdout.snap | 203 ++++++++++-------- .../stdlib/vec_encoding_decoding/stdout.snap | 12 +- .../const_of_contract_call/stdout.snap | 10 + 5 files changed, 143 insertions(+), 95 deletions(-) diff --git a/sway-ir/src/optimize/inline.rs b/sway-ir/src/optimize/inline.rs index 8d92e1305ea..c89c14e4915 100644 --- a/sway-ir/src/optimize/inline.rs +++ b/sway-ir/src/optimize/inline.rs @@ -148,7 +148,7 @@ pub fn fn_inline( let la: &LoopAnalysis = analyses.get_analysis_result(call_site_fn); if let Some(block) = call_site.get_parent_block(ctx) { if la.is_inside_loop(&block) { - threshold = MAX_CALLEE_INSTRUCTION_COUNT_TO_INLINE; + threshold = MAX_CALLEE_INSTRUCTION_COUNT_TO_INLINE + 5; } } diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/array/array_repeat/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/array/array_repeat/stdout.snap index 734f8dc3ef9..d122155b8d8 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/array/array_repeat/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/array/array_repeat/stdout.snap @@ -1287,6 +1287,7 @@ output: Compiling script array_repeat (test/src/e2e_vm_tests/test_programs/should_pass/language/array/array_repeat) <<<<<<< HEAD <<<<<<< HEAD +<<<<<<< HEAD <<<<<<< HEAD Finished release [optimized + fuel] target(s) [1.944 KB] in ??? script array_repeat @@ -1310,12 +1311,19 @@ output: Bytecode size: 2040 bytes (2.04 KB) Bytecode hash: 0x4f9edafab44fe06af95d8e015a91850559d840696e05d6ae80913d7873a73d54 >>>>>>> b4cdcf291 (update tests) +======= + Finished release [optimized + fuel] target(s) [2.152 KB] in ??? + script array_repeat + Bytecode size: 2152 bytes (2.152 KB) + Bytecode hash: 0x77810750c970c763f9a0d60dba74f0cc41bc81a61944521b3e8c305234423f8b +>>>>>>> 7e62d56dc (fix justfile for mac) Running 1 test, filtered 0 tests tested -- array_repeat <<<<<<< HEAD <<<<<<< HEAD +<<<<<<< HEAD <<<<<<< HEAD test test_array_repeat_zero ... ok (???, 2624891 gas) ======= @@ -1327,6 +1335,9 @@ tested -- array_repeat ======= test test_array_repeat_zero ... ok (???, 2887161 gas) >>>>>>> b4cdcf291 (update tests) +======= + test test_array_repeat_zero ... ok (???, 2887761 gas) +>>>>>>> 7e62d56dc (fix justfile for mac) test result: OK. 1 passed; 0 failed; finished in ??? diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/for_loops/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/for_loops/stdout.snap index c64f61dfd48..04dda3a5a5a 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/for_loops/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/for_loops/stdout.snap @@ -8,6 +8,8 @@ fn just_for_loop_15(vector: __ptr { { ptr, u64 }, u64 }) -> () { local mut { u64, ( () | u64 ) } __for_value_opt_1 local { u64, ( () | u64 ) } __ret_val local { { { ptr, u64 }, u64 }, u64 } __struct_init_0 + local u64 code_ + local bool condition_ local mut u64 i local u64 n local u64 other_ @@ -15,86 +17,102 @@ fn just_for_loop_15(vector: __ptr { { ptr, u64 }, u64 }) -> () { local u64 other_1 entry(vector: __ptr { { ptr, u64 }, u64 }): - v1132v1 = get_local __ptr u64, i - v1133v1 = const u64 0 - store v1133v1 to v1132v1 - v1135v1 = get_local __ptr { { { ptr, u64 }, u64 }, u64 }, __struct_init_0 - v1136v1 = const u64 0 - v1137v1 = get_elem_ptr v1135v1, __ptr { { ptr, u64 }, u64 }, v1136v1 - mem_copy_val v1137v1, vector - v1139v1 = const u64 1 - v1140v1 = get_elem_ptr v1135v1, __ptr u64, v1139v1 - v1141v1 = const u64 0 - store v1141v1 to v1140v1 - v1143v1 = get_local __ptr { { { ptr, u64 }, u64 }, u64 }, __for_iterable_2 - mem_copy_val v1143v1, v1135v1 + v1210v1 = get_local __ptr u64, i + v1211v1 = const u64 0 + store v1211v1 to v1210v1 + v1213v1 = get_local __ptr { { { ptr, u64 }, u64 }, u64 }, __struct_init_0 + v1214v1 = const u64 0 + v1215v1 = get_elem_ptr v1213v1, __ptr { { ptr, u64 }, u64 }, v1214v1 + mem_copy_val v1215v1, vector + v1217v1 = const u64 1 + v1218v1 = get_elem_ptr v1213v1, __ptr u64, v1217v1 + v1219v1 = const u64 0 + store v1219v1 to v1218v1 + v1221v1 = get_local __ptr { { { ptr, u64 }, u64 }, u64 }, __for_iterable_2 + mem_copy_val v1221v1, v1213v1 br while() while(): - v1146v1 = const bool true - cbr v1146v1, while_body(), end_while() + v1224v1 = const bool true + cbr v1224v1, while_body(), end_while() while_body(): - v1148v1 = get_local __ptr { { { ptr, u64 }, u64 }, u64 }, __for_iterable_2 - v1149v1 = get_local __ptr { u64, ( () | u64 ) }, __ret_val - v1150v1 = call next_17(v1148v1, v1149v1) - v1151v1 = get_local __ptr { u64, ( () | u64 ) }, __for_value_opt_1 - mem_copy_val v1151v1, v1149v1 - v1153v1 = get_local __ptr { u64, ( () | u64 ) }, __for_value_opt_1 - v1154v1 = const u64 0 - v1155v1 = get_elem_ptr v1153v1, __ptr u64, v1154v1 - v1156v1 = get_local __ptr u64, other_ - v1157v1 = const u64 1 - store v1157v1 to v1156v1 - v1159v1 = load v1155v1 - v1160v1 = get_local __ptr u64, other_ - v1161v1 = load v1160v1 - v1162v1 = cmp eq v1159v1 v1161v1 - v1163v1 = const bool false - cbr v1162v1, is_none_22_block2(v1163v1), is_none_22_block1() + v1226v1 = get_local __ptr { { { ptr, u64 }, u64 }, u64 }, __for_iterable_2 + v1227v1 = get_local __ptr { u64, ( () | u64 ) }, __ret_val + v1228v1 = call next_17(v1226v1, v1227v1) + v1229v1 = get_local __ptr { u64, ( () | u64 ) }, __for_value_opt_1 + mem_copy_val v1229v1, v1227v1 + v1231v1 = get_local __ptr { u64, ( () | u64 ) }, __for_value_opt_1 + v1232v1 = const u64 0 + v1233v1 = get_elem_ptr v1231v1, __ptr u64, v1232v1 + v1234v1 = get_local __ptr u64, other_ + v1235v1 = const u64 1 + store v1235v1 to v1234v1 + v1237v1 = load v1233v1 + v1238v1 = get_local __ptr u64, other_ + v1239v1 = load v1238v1 + v1240v1 = cmp eq v1237v1 v1239v1 + v1241v1 = const bool false + cbr v1240v1, is_none_22_block2(v1241v1), is_none_22_block1() is_none_22_block1(): - v1165v1 = const bool true - br is_none_22_block2(v1165v1) + v1243v1 = const bool true + br is_none_22_block2(v1243v1) - is_none_22_block2(v1131v1: bool): - cbr v1131v1, end_while(), block1() + is_none_22_block2(v1209v1: bool): + cbr v1209v1, end_while(), block1() block1(): - v1168v1 = get_local __ptr { u64, ( () | u64 ) }, __for_value_opt_1 - v1169v1 = call unwrap_23(v1168v1) - v1170v1 = get_local __ptr u64, n - store v1169v1 to v1170v1 - v1172v1 = get_local __ptr u64, i - v1173v1 = get_local __ptr u64, n - v1174v1 = load v1173v1 - v1175v1 = load v1172v1 - v1176v1 = cmp eq v1174v1 v1175v1 - v1177v1 = call assert_25(v1176v1) - v1178v1 = get_local __ptr u64, i - v1179v1 = get_local __ptr u64, other_0 - v1180v1 = const u64 1 - store v1180v1 to v1179v1 - v1182v1 = load v1178v1 - v1183v1 = get_local __ptr u64, other_0 - v1184v1 = load v1183v1 - v1185v1 = add v1182v1, v1184v1 - v1186v1 = get_local __ptr u64, i - store v1185v1 to v1186v1 + v1246v1 = get_local __ptr { u64, ( () | u64 ) }, __for_value_opt_1 + v1247v1 = call unwrap_23(v1246v1) + v1248v1 = get_local __ptr u64, n + store v1247v1 to v1248v1 + v1250v1 = get_local __ptr u64, i + v1251v1 = get_local __ptr u64, n + v1252v1 = load v1251v1 + v1253v1 = load v1250v1 + v1254v1 = cmp eq v1252v1 v1253v1 + v1255v1 = get_local __ptr bool, condition_ + store v1254v1 to v1255v1 + v1257v1 = get_local __ptr bool, condition_ + v1258v1 = load v1257v1 + v1259v1 = const bool false + v1260v1 = cmp eq v1258v1 v1259v1 + cbr v1260v1, assert_25_block0(), assert_25_block1() + + assert_25_block0(): + v1262v1 = get_global __ptr u64, std::error_signals::FAILED_ASSERT_SIGNAL + v1263v1 = get_local __ptr u64, code_ + mem_copy_val v1263v1, v1262v1 + v1265v1 = get_local __ptr u64, code_ + v1266v1 = load v1265v1 + revert v1266v1 + + assert_25_block1(): + v1268v1 = get_local __ptr u64, i + v1269v1 = get_local __ptr u64, other_0 + v1270v1 = const u64 1 + store v1270v1 to v1269v1 + v1272v1 = load v1268v1 + v1273v1 = get_local __ptr u64, other_0 + v1274v1 = load v1273v1 + v1275v1 = add v1272v1, v1274v1 + v1276v1 = get_local __ptr u64, i + store v1275v1 to v1276v1 br while() end_while(): - v1189v1 = get_local __ptr u64, i - v1190v1 = get_local __ptr u64, other_1 - v1191v1 = const u64 5 - store v1191v1 to v1190v1 - v1193v1 = load v1189v1 - v1194v1 = get_local __ptr u64, other_1 - v1195v1 = load v1194v1 - v1196v1 = cmp eq v1193v1 v1195v1 - v1197v1 = call assert_25(v1196v1) - v1198v1 = const unit () - ret () v1198v1 + v1279v1 = get_local __ptr u64, i + v1280v1 = get_local __ptr u64, other_1 + v1281v1 = const u64 5 + store v1281v1 to v1280v1 + v1283v1 = load v1279v1 + v1284v1 = get_local __ptr u64, other_1 + v1285v1 = load v1284v1 + v1286v1 = cmp eq v1283v1 v1285v1 + v1287v1 = call assert_25(v1286v1) + v1288v1 = const unit () + ret () v1288v1 } @@ -104,10 +122,10 @@ fn just_for_loop_15(vector: __ptr { { ptr, u64 }, u64 }) -> () { pshh i531456 ; [fn init: just_for_loop_15]: push used high registers 40..64 move $$locbase $sp ; [fn init: just_for_loop_15]: set locals base register -cfei i136 ; [fn init: just_for_loop_15]: allocate: locals 136 byte(s), call args 0 slot(s) +cfei i152 ; [fn init: just_for_loop_15]: allocate: locals 152 byte(s), call args 0 slot(s) move $r0 $$arg0 ; [fn init: just_for_loop_15]: copy argument 0 (vector) move $r1 $$reta ; [fn init: just_for_loop_15]: save return address -sw $$locbase $zero i12 ; store word +sw $$locbase $zero i14 ; store word addi $r2 $$locbase i64 ; get offset to local __ptr { { { ptr, u64 }, u64 }, u64 } mcpi $r2 $r0 i24 ; copy memory sw $$locbase $zero i11 ; store word @@ -115,40 +133,49 @@ mcpi $$locbase $r2 i32 ; copy memory addi $r0 $$locbase i48 ; get offset to local __ptr { u64, ( () | u64 ) } move $$arg0 $$locbase ; [call: next_17]: pass argument 0 move $$arg1 $r0 ; [call: next_17]: pass argument 1 -jal $$reta $pc i37 ; [call: next_17]: call function +jal $$reta $pc i47 ; [call: next_17]: call function addi $r2 $$locbase i32 ; get offset to local __ptr { u64, ( () | u64 ) } mcpi $r2 $r0 i16 ; copy memory -sw $$locbase $one i14 ; store word +sw $$locbase $one i16 ; store word lw $r0 $$locbase i4 ; load word -lw $r2 $$locbase i14 ; load word +lw $r2 $$locbase i16 ; load word eq $r0 $r0 $r2 movi $r2 i0 ; move parameter from branch to block argument jnzf $r0 $zero i1 movi $r2 i1 ; move parameter from branch to block argument -jnzf $r2 $zero i15 +jnzf $r2 $zero i25 addi $r0 $$locbase i32 ; get offset to local __ptr { u64, ( () | u64 ) } move $$arg0 $r0 ; [call: unwrap_23]: pass argument 0 -jal $$reta $pc i110 ; [call: unwrap_23]: call function -sw $$locbase $$retv i13 ; store word -lw $r0 $$locbase i13 ; load word -lw $r2 $$locbase i12 ; load word +jal $$reta $pc i120 ; [call: unwrap_23]: call function +sw $$locbase $$retv i15 ; store word +lw $r0 $$locbase i15 ; load word +lw $r2 $$locbase i14 ; load word eq $r0 $r0 $r2 -move $$arg0 $r0 ; [call: assert_25]: pass argument 0 -jal $$reta $pc i121 ; [call: assert_25]: call function -sw $$locbase $one i15 ; store word -lw $r0 $$locbase i12 ; load word -lw $r2 $$locbase i15 ; load word +addi $r2 $$locbase i104 ; get offset to local __ptr bool +sb $r2 $r0 i0 ; store byte +addi $r0 $$locbase i104 ; get offset to local __ptr bool +lb $r0 $r0 i0 ; load byte +eq $r0 $r0 $zero +jnzf $r0 $zero i6 +sw $$locbase $one i17 ; store word +lw $r0 $$locbase i14 ; load word +lw $r2 $$locbase i17 ; load word add $r0 $r0 $r2 -sw $$locbase $r0 i12 ; store word -jmpb $zero i27 -movi $r0 i5 ; initialize constant into register -sw $$locbase $r0 i16 ; store word +sw $$locbase $r0 i14 ; store word +jmpb $zero i31 +addr $r0 data_NonConfigurable_0; get std::error_signals::FAILED_ASSERT_SIGNAL's address in data section +addi $r1 $$locbase i96 ; get offset to local __ptr u64 +mcpi $r1 $r0 i8 ; copy memory lw $r0 $$locbase i12 ; load word -lw $r2 $$locbase i16 ; load word +rvrt $r0 +movi $r0 i5 ; initialize constant into register +sw $$locbase $r0 i18 ; store word +lw $r0 $$locbase i14 ; load word +lw $r2 $$locbase i18 ; load word eq $r0 $r0 $r2 move $$arg0 $r0 ; [call: assert_25]: pass argument 0 jal $$reta $pc i108 ; [call: assert_25]: call function -cfsi i136 ; [fn end: just_for_loop_15] free: locals 136 byte(s), call args 0 slot(s) +cfsi i152 ; [fn end: just_for_loop_15] free: locals 152 byte(s), call args 0 slot(s) move $$reta $r1 ; [fn end: just_for_loop_15] restore return address poph i531456 ; [fn end: just_for_loop_15]: restore used high registers 40..64 jal $zero $$reta i0 ; [fn end: just_for_loop_15] return from call diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/stdlib/vec_encoding_decoding/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/stdlib/vec_encoding_decoding/stdout.snap index 13df4ed4863..e3c968b3a73 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/stdlib/vec_encoding_decoding/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/stdlib/vec_encoding_decoding/stdout.snap @@ -7,27 +7,27 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/stdlib/vec_encoding_decoding Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-vec) Compiling script vec_encoding_decoding (test/src/e2e_vm_tests/test_programs/should_pass/stdlib/vec_encoding_decoding) - Finished release [optimized + fuel] target(s) [10.744 KB] in ??? + Finished release [optimized + fuel] target(s) [10.736 KB] in ??? Running 6 tests, filtered 0 tests tested -- vec_encoding_decoding - test vec_trivial ... ok (???, 2904 gas) + test vec_trivial ... ok (???, 2877 gas) decoded log values: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], log rb: 15402277555065905665 - test nested_vec_trivial ... ok (???, 19431 gas) + test nested_vec_trivial ... ok (???, 19176 gas) decoded log values: [[], [0], [0, 1], [0, 1, 2], [0, 1, 2, 3], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4, 5], [0, 1, 2, 3, 4, 5, 6], [0, 1, 2, 3, 4, 5, 6, 7], [0, 1, 2, 3, 4, 5, 6, 7, 8]], log rb: 7518769745117093018 - test vec_non_trivial ... ok (???, 7028 gas) + test vec_non_trivial ... ok (???, 7003 gas) decoded log values: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], log rb: 1424139416812312134 - test nested_vec_non_trivial ... ok (???, 36229 gas) + test nested_vec_non_trivial ... ok (???, 35971 gas) decoded log values: [[], [0], [0, 1], [0, 1, 2], [0, 1, 2, 3], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4, 5], [0, 1, 2, 3, 4, 5, 6], [0, 1, 2, 3, 4, 5, 6, 7], [0, 1, 2, 3, 4, 5, 6, 7, 8]], log rb: 16171443785104013487 test vec_encode_zst ... ok (???, 2750 gas) decoded log values: [(), (), (), (), (), (), (), (), (), ()], log rb: 7172587179247292377 - test nested_vec_zst ... ok (???, 18906 gas) + test nested_vec_zst ... ok (???, 18886 gas) decoded log values: [[], [()], [(), ()], [(), (), ()], [(), (), (), ()], [(), (), (), (), ()], [(), (), (), (), (), ()], [(), (), (), (), (), (), ()], [(), (), (), (), (), (), (), ()], [(), (), (), (), (), (), (), (), ()]], log rb: 15095959372321865352 diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call/stdout.snap index 81ae673dce4..fa642455791 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call/stdout.snap @@ -9,6 +9,7 @@ output: Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) <<<<<<< HEAD <<<<<<< HEAD +<<<<<<< HEAD <<<<<<< HEAD Finished release [optimized + fuel] target(s) [19.408 KB] in ??? ======= @@ -20,12 +21,16 @@ output: ======= Finished release [optimized + fuel] target(s) [24.824 KB] in ??? >>>>>>> b4cdcf291 (update tests) +======= + Finished release [optimized + fuel] target(s) [24.944 KB] in ??? +>>>>>>> 7e62d56dc (fix justfile for mac) Running 33 tests, filtered 0 tests tested -- const_of_contract_call <<<<<<< HEAD <<<<<<< HEAD +<<<<<<< HEAD <<<<<<< HEAD test cost_of_in_bool ... ok (???, 1736 gas) test cost_of_in_u8 ... ok (???, 1704 gas) @@ -99,6 +104,8 @@ tested -- const_of_contract_call <<<<<<< HEAD >>>>>>> a94b693b4 (update tests) ======= +======= +>>>>>>> 7e62d56dc (fix justfile for mac) test cost_of_in_bool ... ok (???, 1806 gas) test cost_of_in_u8 ... ok (???, 1774 gas) test cost_of_in_u16 ... ok (???, 1939 gas) @@ -132,9 +139,12 @@ tested -- const_of_contract_call test in_vec_not_trivial ... ok (???, 5940 gas) test order_args_without_trivial_enum ... ok (???, 3250 gas) test order_args_with_trivial_enum ... ok (???, 3462 gas) +<<<<<<< HEAD >>>>>>> 2c082a4be (update tests) ======= >>>>>>> b4cdcf291 (update tests) +======= +>>>>>>> 7e62d56dc (fix justfile for mac) test result: OK. 33 passed; 0 failed; finished in ??? From 7ea6c4af157613e3c26ad4769c87453faa5ad49e Mon Sep 17 00:00:00 2001 From: xunilrj Date: Wed, 10 Jun 2026 18:17:07 -0300 Subject: [PATCH 17/42] do not inline fns with asm blocks --- sway-ir/src/optimize/inline.rs | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/sway-ir/src/optimize/inline.rs b/sway-ir/src/optimize/inline.rs index c89c14e4915..62bf003819a 100644 --- a/sway-ir/src/optimize/inline.rs +++ b/sway-ir/src/optimize/inline.rs @@ -122,19 +122,19 @@ pub fn fn_inline( } // We do not deal very well with asm blocks, so avoid inlining functions with it - // let has_asm_block = func - // .instruction_iter(ctx) - // .any(|(_, v)| match v.get_instruction(ctx) { - // Some(Instruction { - // op: InstOp::AsmBlock(..), - // .. - // }) => true, - // _ => false, - // }); - - // if has_asm_block { - // return false; - // } + let has_asm_block = func + .instruction_iter(ctx) + .any(|(_, v)| match v.get_instruction(ctx) { + Some(Instruction { + op: InstOp::AsmBlock(..), + .. + }) => true, + _ => false, + }); + + if has_asm_block { + return false; + } // If the function is called less than the threshold, inline it. if call_counts.get(func).copied().unwrap_or(0) <= MAX_CALLS_COUNT_TO_INLINE { From 7c6f65cab7115dada1e54006c6f74591cef163c3 Mon Sep 17 00:00:00 2001 From: xunilrj Date: Wed, 10 Jun 2026 18:21:24 -0300 Subject: [PATCH 18/42] new inline threshold --- sway-ir/src/optimize/inline.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sway-ir/src/optimize/inline.rs b/sway-ir/src/optimize/inline.rs index 62bf003819a..9b90b941aa9 100644 --- a/sway-ir/src/optimize/inline.rs +++ b/sway-ir/src/optimize/inline.rs @@ -148,7 +148,7 @@ pub fn fn_inline( let la: &LoopAnalysis = analyses.get_analysis_result(call_site_fn); if let Some(block) = call_site.get_parent_block(ctx) { if la.is_inside_loop(&block) { - threshold = MAX_CALLEE_INSTRUCTION_COUNT_TO_INLINE + 5; + threshold = MAX_CALLEE_INSTRUCTION_COUNT_TO_INLINE + 12; } } From 62e05808a8e56dda4569582f2c564fd71abc98f7 Mon Sep 17 00:00:00 2001 From: xunilrj Date: Wed, 10 Jun 2026 18:26:05 -0300 Subject: [PATCH 19/42] new inline threshold --- sway-ir/src/optimize/inline.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sway-ir/src/optimize/inline.rs b/sway-ir/src/optimize/inline.rs index 9b90b941aa9..ce16577506a 100644 --- a/sway-ir/src/optimize/inline.rs +++ b/sway-ir/src/optimize/inline.rs @@ -148,7 +148,7 @@ pub fn fn_inline( let la: &LoopAnalysis = analyses.get_analysis_result(call_site_fn); if let Some(block) = call_site.get_parent_block(ctx) { if la.is_inside_loop(&block) { - threshold = MAX_CALLEE_INSTRUCTION_COUNT_TO_INLINE + 12; + threshold = MAX_CALLEE_INSTRUCTION_COUNT_TO_INLINE; } } From 35c185df61640320143aa17b98cf098b615c494d Mon Sep 17 00:00:00 2001 From: xunilrj Date: Wed, 10 Jun 2026 18:35:07 -0300 Subject: [PATCH 20/42] new inline threshold --- sway-ir/src/optimize/inline.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sway-ir/src/optimize/inline.rs b/sway-ir/src/optimize/inline.rs index ce16577506a..8708f5dc639 100644 --- a/sway-ir/src/optimize/inline.rs +++ b/sway-ir/src/optimize/inline.rs @@ -148,7 +148,7 @@ pub fn fn_inline( let la: &LoopAnalysis = analyses.get_analysis_result(call_site_fn); if let Some(block) = call_site.get_parent_block(ctx) { if la.is_inside_loop(&block) { - threshold = MAX_CALLEE_INSTRUCTION_COUNT_TO_INLINE; + threshold = MAX_CALLEE_INSTRUCTION_COUNT_TO_INLINE * 2; } } From 15dcbe72916d7558f9be7f0e0ea25e678547b9ca Mon Sep 17 00:00:00 2001 From: xunilrj Date: Wed, 10 Jun 2026 18:43:28 -0300 Subject: [PATCH 21/42] new inline threshold --- sway-ir/src/optimize/inline.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/sway-ir/src/optimize/inline.rs b/sway-ir/src/optimize/inline.rs index 8708f5dc639..88abd10072b 100644 --- a/sway-ir/src/optimize/inline.rs +++ b/sway-ir/src/optimize/inline.rs @@ -121,14 +121,15 @@ pub fn fn_inline( None => {} } - // We do not deal very well with asm blocks, so avoid inlining functions with it + // We do not deal very well with asm blocks, so avoid inlining functions with + // asm blocks with more than 1 instructions (normally transmutes) let has_asm_block = func .instruction_iter(ctx) .any(|(_, v)| match v.get_instruction(ctx) { Some(Instruction { - op: InstOp::AsmBlock(..), + op: InstOp::AsmBlock(block, ..), .. - }) => true, + }) => block.body.len() > 1, _ => false, }); From f6a8bc9b5d78a5d2370b5f9e4eec936bab03fa56 Mon Sep 17 00:00:00 2001 From: xunilrj Date: Wed, 10 Jun 2026 18:49:47 -0300 Subject: [PATCH 22/42] new inline threshold --- sway-ir/src/optimize/inline.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sway-ir/src/optimize/inline.rs b/sway-ir/src/optimize/inline.rs index 88abd10072b..a47954cc22f 100644 --- a/sway-ir/src/optimize/inline.rs +++ b/sway-ir/src/optimize/inline.rs @@ -149,7 +149,7 @@ pub fn fn_inline( let la: &LoopAnalysis = analyses.get_analysis_result(call_site_fn); if let Some(block) = call_site.get_parent_block(ctx) { if la.is_inside_loop(&block) { - threshold = MAX_CALLEE_INSTRUCTION_COUNT_TO_INLINE * 2; + threshold = MAX_CALLEE_INSTRUCTION_COUNT_TO_INLINE; } } From 62f3910ccaaa0bc6c7d6a803541a756b4d2ea024 Mon Sep 17 00:00:00 2001 From: xunilrj Date: Wed, 10 Jun 2026 20:22:47 -0300 Subject: [PATCH 23/42] new inline threshold --- sway-ir/src/optimize/inline.rs | 47 +++++++++++++++++++--------------- 1 file changed, 26 insertions(+), 21 deletions(-) diff --git a/sway-ir/src/optimize/inline.rs b/sway-ir/src/optimize/inline.rs index a47954cc22f..9c5ee917e02 100644 --- a/sway-ir/src/optimize/inline.rs +++ b/sway-ir/src/optimize/inline.rs @@ -121,37 +121,42 @@ pub fn fn_inline( None => {} } + // This is disabled as we have not found it useful at this point + // Needs better exploration with other parameters. + // // We do not deal very well with asm blocks, so avoid inlining functions with // asm blocks with more than 1 instructions (normally transmutes) - let has_asm_block = func - .instruction_iter(ctx) - .any(|(_, v)| match v.get_instruction(ctx) { - Some(Instruction { - op: InstOp::AsmBlock(block, ..), - .. - }) => block.body.len() > 1, - _ => false, - }); - - if has_asm_block { - return false; - } + // let has_asm_block = func + // .instruction_iter(ctx) + // .any(|(_, v)| match v.get_instruction(ctx) { + // Some(Instruction { + // op: InstOp::AsmBlock(block, ..), + // .. + // }) => block.body.len() > 1, + // _ => false, + // }); + // if has_asm_block { + // return false; + // } // If the function is called less than the threshold, inline it. if call_counts.get(func).copied().unwrap_or(0) <= MAX_CALLS_COUNT_TO_INLINE { return true; } - let mut threshold = MAX_CALLEE_INSTRUCTION_COUNT_TO_INLINE; + let threshold = MAX_CALLEE_INSTRUCTION_COUNT_TO_INLINE; + // This is disabled as we have not found it useful at this point + // Needs better exploration with other parameters. + // // If call site is inside loops, increase the threshold - let call_site_fn = call_site.get_parent_function(ctx).unwrap(); - let la: &LoopAnalysis = analyses.get_analysis_result(call_site_fn); - if let Some(block) = call_site.get_parent_block(ctx) { - if la.is_inside_loop(&block) { - threshold = MAX_CALLEE_INSTRUCTION_COUNT_TO_INLINE; - } - } + // let call_site_fn = call_site.get_parent_function(ctx).unwrap(); + // let la: &LoopAnalysis = analyses.get_analysis_result(call_site_fn); + // if let Some(block) = call_site.get_parent_block(ctx) { + // if la.is_inside_loop(&block) { + // threshold = MAX_CALLEE_INSTRUCTION_COUNT_TO_INLINE; + // } + // } // If the function is (still) small then also inline it. if func.num_instructions_incl_asm_instructions(ctx) <= threshold { From 9172bd475b3fc74bc7272271c65ede46503f3a30 Mon Sep 17 00:00:00 2001 From: xunilrj Date: Wed, 10 Jun 2026 20:54:11 -0300 Subject: [PATCH 24/42] finishing up PR --- sway-ir/src/analysis/dominator.rs | 4 ++-- sway-ir/src/optimize/inline.rs | 15 +++++++++++---- sway-ir/src/optimize/memcpyopt.rs | 1 + sway-ir/src/pass_manager.rs | 7 +++++++ sway-ir/src/printer.rs | 1 + 5 files changed, 22 insertions(+), 6 deletions(-) diff --git a/sway-ir/src/analysis/dominator.rs b/sway-ir/src/analysis/dominator.rs index 16b921fc068..acb5a176de6 100644 --- a/sway-ir/src/analysis/dominator.rs +++ b/sway-ir/src/analysis/dominator.rs @@ -44,8 +44,8 @@ pub struct PostOrder { impl AnalysisResultT for PostOrder {} impl PostOrder { - /// If `block` was found by the `PostOrder` analysis, - /// so it is reachable from the entry function. + /// If `block` was found by the `PostOrder` analysis + /// it is reachable from the entry function. #[inline(always)] pub fn is_reachable(&self, block: &Block) -> bool { self.block_to_po.contains_key(block) diff --git a/sway-ir/src/optimize/inline.rs b/sway-ir/src/optimize/inline.rs index 9c5ee917e02..7214518f56f 100644 --- a/sway-ir/src/optimize/inline.rs +++ b/sway-ir/src/optimize/inline.rs @@ -28,7 +28,7 @@ pub fn create_fn_inline_pass() -> Pass { Pass { name: FN_INLINE_NAME, descr: "Function inlining", - deps: vec![LOOP_ANALYSIS_NAME], + deps: vec![/*LOOP_ANALYSIS_NAME*/], runner: ScopedPass::ModulePass(PassMutability::Transform(fn_inline)), } } @@ -75,7 +75,7 @@ pub fn metadata_to_inline(context: &Context, md_idx: Option) -> O pub fn fn_inline( context: &mut Context, - analyses: &AnalysisResults, + _analyses: &AnalysisResults, module: Module, ) -> Result { // Inspect ALL calls and count how often each function is called. @@ -100,7 +100,7 @@ pub fn fn_inline( const MAX_CALLEE_INSTRUCTION_COUNT_TO_INLINE: usize = 12; const MAX_CALLS_COUNT_TO_INLINE: u64 = 1; - let inline_heuristic = |ctx: &Context, func: &Function, call_site: &Value| { + let inline_heuristic = |ctx: &Context, func: &Function, _call_site: &Value| { // The encoding code in the `__entry` functions contains pointer patterns that mark // escape analysis and referred symbols as incomplete. This effectively forbids optimizations // like SROA nad DCE. If we inline original entries, like e.g., `main`, the code in them will @@ -139,6 +139,13 @@ pub fn fn_inline( // return false; // } + // Inline run multiple times. Every time a call is inlined, + // its call count decreases. So it is possible that a function + // called multiple times, after all inlining ends up being called just once. + // At this point this algo will think it makes sense to inline it one last time. + // + // We need improvement here. + // // If the function is called less than the threshold, inline it. if call_counts.get(func).copied().unwrap_or(0) <= MAX_CALLS_COUNT_TO_INLINE { return true; @@ -154,7 +161,7 @@ pub fn fn_inline( // let la: &LoopAnalysis = analyses.get_analysis_result(call_site_fn); // if let Some(block) = call_site.get_parent_block(ctx) { // if la.is_inside_loop(&block) { - // threshold = MAX_CALLEE_INSTRUCTION_COUNT_TO_INLINE; + // threshold = MAX_CALLEE_INSTRUCTION_COUNT_TO_INLINE * 2; // } // } diff --git a/sway-ir/src/optimize/memcpyopt.rs b/sway-ir/src/optimize/memcpyopt.rs index fd3a2527d69..c0298116514 100644 --- a/sway-ir/src/optimize/memcpyopt.rs +++ b/sway-ir/src/optimize/memcpyopt.rs @@ -563,6 +563,7 @@ fn local_copy_prop( // optimization possible. We could track just the changes and do it // all in one go, but that would complicate the algorithm. So I've // marked this as a TODO for now (#4600). + // 100 here just to avoid infinite recursion. for _ in 0..100 { available_copies = FxHashSet::default(); src_to_copies = IndexMap::default(); diff --git a/sway-ir/src/pass_manager.rs b/sway-ir/src/pass_manager.rs index 5cd401e112a..388793e4bed 100644 --- a/sway-ir/src/pass_manager.rs +++ b/sway-ir/src/pass_manager.rs @@ -369,6 +369,7 @@ impl PassManager { let passes = passes.flatten_pass_group(); // run until stabilize + // 10 here just to avoid infinite running for _ in 0..10 { let mut modified = false; @@ -403,10 +404,16 @@ impl PassManager { let mut global_modified = false; +<<<<<<< HEAD // Make it easy for tests to run IR verification in all steps let force_verify: String = std::env::var("SWAY_FORCE_VERIFY_IR").unwrap_or_else(|_| "false".to_string()); let force_verify: bool = force_verify.parse().unwrap_or(false); +======= + // 10 here just to avoid infinite running + for _ in 0..10 { + let mut modified = false; +>>>>>>> ab552eebc (finishing up PR) for _ in 0..2 { let mut iter_modified = false; diff --git a/sway-ir/src/printer.rs b/sway-ir/src/printer.rs index 263a51e57d8..4ea364bb9a9 100644 --- a/sway-ir/src/printer.rs +++ b/sway-ir/src/printer.rs @@ -190,6 +190,7 @@ pub fn function_print( } /// Print an instruction to stdout. +/// Incomplete impl is fine here as this is only used for debugging the compiler. pub fn instruction_print(s: &mut impl std::fmt::Write, context: &Context, ins_value: &Value) { let mut md_namer = MetadataNamer::default(); From 110ab01417ea5a85e41aaa7156f64039f388c1f5 Mon Sep 17 00:00:00 2001 From: xunilrj Date: Wed, 10 Jun 2026 20:54:52 -0300 Subject: [PATCH 25/42] fmt and clippy issues --- sway-ir/src/optimize/inline.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/sway-ir/src/optimize/inline.rs b/sway-ir/src/optimize/inline.rs index 7214518f56f..68bb08dee8d 100644 --- a/sway-ir/src/optimize/inline.rs +++ b/sway-ir/src/optimize/inline.rs @@ -18,8 +18,7 @@ use crate::{ metadata::{combine, MetadataIndex}, value::{Value, ValueContent, ValueDatum}, variable::LocalVar, - AnalysisResults, BlockArgument, Instruction, LoopAnalysis, Module, Pass, PassMutability, - ScopedPass, LOOP_ANALYSIS_NAME, + AnalysisResults, BlockArgument, Instruction, Module, Pass, PassMutability, ScopedPass, }; pub const FN_INLINE_NAME: &str = "inline"; From 3846fc6337ae0f9e817c21c78fbaadad68292e42 Mon Sep 17 00:00:00 2001 From: xunilrj Date: Thu, 11 Jun 2026 07:50:25 -0300 Subject: [PATCH 26/42] update tests --- forc/tests/cli_integration.rs | 88 ++++++++ .../language/array/array_repeat/stdout.snap | 11 + .../language/for_loops/stdout.snap | 203 ++++++++---------- .../stdlib/vec_encoding_decoding/stdout.snap | 12 +- .../const_of_contract_call/stdout.snap | 10 + .../src/sdk-harness/test_projects/auth/mod.rs | 8 + 6 files changed, 211 insertions(+), 121 deletions(-) create mode 100644 forc/tests/cli_integration.rs diff --git a/forc/tests/cli_integration.rs b/forc/tests/cli_integration.rs new file mode 100644 index 00000000000..40c7ac7275d --- /dev/null +++ b/forc/tests/cli_integration.rs @@ -0,0 +1,88 @@ +use std::path::PathBuf; + +use rexpect::spawn; + +const TIMEOUT_MS: u64 = 300000; + +fn test_fixtures_path() -> PathBuf { + PathBuf::from(env!("CARGO_MANIFEST_DIR")) + .join("tests") + .join("fixtures") + .canonicalize() + .unwrap() +} + +#[test] +fn test_forc_test_decoded_logs() -> Result<(), rexpect::error::Error> { + // Spawn the forc binary using cargo run + let project_dir = test_fixtures_path().join("test_contract"); + let mut process = spawn( + &format!( + "cargo run --bin forc -- test --logs --path {}", + project_dir.to_string_lossy() + ), + Some(TIMEOUT_MS), + )?; + + // Assert that the output is correct + process.exp_string(" test test_log_4")?; + process.exp_string("decoded log values:")?; + process.exp_string("4, log rb: 1515152261580153489")?; + process.exp_string(" test test_log_2")?; + process.exp_string("decoded log values:")?; + process.exp_string("2, log rb: 1515152261580153489")?; + + process.process.exit()?; + Ok(()) +} + +#[test] +fn test_forc_test_raw_logs() -> Result<(), rexpect::error::Error> { + // Spawn the forc binary using cargo run + let project_dir = test_fixtures_path().join("test_contract"); + let mut process = spawn( + &format!( + "cargo run --bin forc -- test --raw-logs --path {}", + project_dir.to_string_lossy() + ), + Some(TIMEOUT_MS), + )?; + + // Assert that the output is correct + process.exp_string(" test test_log_4")?; + process.exp_string("raw logs:")?; + process.exp_string(r#"[{"LogData":{"data":"0000000000000004","digest":"8005f02d43fa06e7d0585fb64c961d57e318b27a145c857bcd3a6bdb413ff7fc","id":"0000000000000000000000000000000000000000000000000000000000000000","is":10368,"len":8,"pc":11288,"ptr":12464,"ra":0,"rb":1515152261580153489}}]"#)?; + process.exp_string(" test test_log_2")?; + process.exp_string("raw logs:")?; + process.exp_string(r#"[{"LogData":{"data":"0000000000000002","digest":"cd04a4754498e06db5a13c5f371f1f04ff6d2470f24aa9bd886540e5dce77f70","id":"0000000000000000000000000000000000000000000000000000000000000000","is":10368,"len":8,"pc":11288,"ptr":12464,"ra":0,"rb":1515152261580153489}}]"#)?; + + process.process.exit()?; + Ok(()) +} + +#[test] +fn test_forc_test_both_logs() -> Result<(), rexpect::error::Error> { + // Spawn the forc binary using cargo run + let project_dir = test_fixtures_path().join("test_contract"); + let mut process = spawn( + &format!( + "cargo run --bin forc -- test --logs --raw-logs --path {}", + project_dir.to_string_lossy() + ), + Some(TIMEOUT_MS), + )?; + + // Assert that the output is correct + process.exp_string(" test test_log_4")?; + process.exp_string("decoded log values:")?; + process.exp_string("4, log rb: 1515152261580153489")?; + process.exp_string("raw logs:")?; + process.exp_string(r#"[{"LogData":{"data":"0000000000000004","digest":"8005f02d43fa06e7d0585fb64c961d57e318b27a145c857bcd3a6bdb413ff7fc","id":"0000000000000000000000000000000000000000000000000000000000000000","is":10368,"len":8,"pc":11288,"ptr":12464,"ra":0,"rb":1515152261580153489}}]"#)?; + process.exp_string(" test test_log_2")?; + process.exp_string("decoded log values:")?; + process.exp_string("2, log rb: 1515152261580153489")?; + process.exp_string("raw logs:")?; + process.exp_string(r#"[{"LogData":{"data":"0000000000000002","digest":"cd04a4754498e06db5a13c5f371f1f04ff6d2470f24aa9bd886540e5dce77f70","id":"0000000000000000000000000000000000000000000000000000000000000000","is":10368,"len":8,"pc":11288,"ptr":12464,"ra":0,"rb":1515152261580153489}}]"#)?; + process.process.exit()?; + Ok(()) +} diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/array/array_repeat/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/array/array_repeat/stdout.snap index d122155b8d8..9601d089dee 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/array/array_repeat/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/array/array_repeat/stdout.snap @@ -1288,6 +1288,7 @@ output: <<<<<<< HEAD <<<<<<< HEAD <<<<<<< HEAD +<<<<<<< HEAD <<<<<<< HEAD Finished release [optimized + fuel] target(s) [1.944 KB] in ??? script array_repeat @@ -1317,6 +1318,12 @@ output: Bytecode size: 2152 bytes (2.152 KB) Bytecode hash: 0x77810750c970c763f9a0d60dba74f0cc41bc81a61944521b3e8c305234423f8b >>>>>>> 7e62d56dc (fix justfile for mac) +======= + Finished release [optimized + fuel] target(s) [2.04 KB] in ??? + script array_repeat + Bytecode size: 2040 bytes (2.04 KB) + Bytecode hash: 0x4f9edafab44fe06af95d8e015a91850559d840696e05d6ae80913d7873a73d54 +>>>>>>> a53b41c32 (update tests) Running 1 test, filtered 0 tests tested -- array_repeat @@ -1324,6 +1331,7 @@ tested -- array_repeat <<<<<<< HEAD <<<<<<< HEAD <<<<<<< HEAD +<<<<<<< HEAD <<<<<<< HEAD test test_array_repeat_zero ... ok (???, 2624891 gas) ======= @@ -1338,6 +1346,9 @@ tested -- array_repeat ======= test test_array_repeat_zero ... ok (???, 2887761 gas) >>>>>>> 7e62d56dc (fix justfile for mac) +======= + test test_array_repeat_zero ... ok (???, 2887161 gas) +>>>>>>> a53b41c32 (update tests) test result: OK. 1 passed; 0 failed; finished in ??? diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/for_loops/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/for_loops/stdout.snap index 04dda3a5a5a..c64f61dfd48 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/for_loops/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/for_loops/stdout.snap @@ -8,8 +8,6 @@ fn just_for_loop_15(vector: __ptr { { ptr, u64 }, u64 }) -> () { local mut { u64, ( () | u64 ) } __for_value_opt_1 local { u64, ( () | u64 ) } __ret_val local { { { ptr, u64 }, u64 }, u64 } __struct_init_0 - local u64 code_ - local bool condition_ local mut u64 i local u64 n local u64 other_ @@ -17,102 +15,86 @@ fn just_for_loop_15(vector: __ptr { { ptr, u64 }, u64 }) -> () { local u64 other_1 entry(vector: __ptr { { ptr, u64 }, u64 }): - v1210v1 = get_local __ptr u64, i - v1211v1 = const u64 0 - store v1211v1 to v1210v1 - v1213v1 = get_local __ptr { { { ptr, u64 }, u64 }, u64 }, __struct_init_0 - v1214v1 = const u64 0 - v1215v1 = get_elem_ptr v1213v1, __ptr { { ptr, u64 }, u64 }, v1214v1 - mem_copy_val v1215v1, vector - v1217v1 = const u64 1 - v1218v1 = get_elem_ptr v1213v1, __ptr u64, v1217v1 - v1219v1 = const u64 0 - store v1219v1 to v1218v1 - v1221v1 = get_local __ptr { { { ptr, u64 }, u64 }, u64 }, __for_iterable_2 - mem_copy_val v1221v1, v1213v1 + v1132v1 = get_local __ptr u64, i + v1133v1 = const u64 0 + store v1133v1 to v1132v1 + v1135v1 = get_local __ptr { { { ptr, u64 }, u64 }, u64 }, __struct_init_0 + v1136v1 = const u64 0 + v1137v1 = get_elem_ptr v1135v1, __ptr { { ptr, u64 }, u64 }, v1136v1 + mem_copy_val v1137v1, vector + v1139v1 = const u64 1 + v1140v1 = get_elem_ptr v1135v1, __ptr u64, v1139v1 + v1141v1 = const u64 0 + store v1141v1 to v1140v1 + v1143v1 = get_local __ptr { { { ptr, u64 }, u64 }, u64 }, __for_iterable_2 + mem_copy_val v1143v1, v1135v1 br while() while(): - v1224v1 = const bool true - cbr v1224v1, while_body(), end_while() + v1146v1 = const bool true + cbr v1146v1, while_body(), end_while() while_body(): - v1226v1 = get_local __ptr { { { ptr, u64 }, u64 }, u64 }, __for_iterable_2 - v1227v1 = get_local __ptr { u64, ( () | u64 ) }, __ret_val - v1228v1 = call next_17(v1226v1, v1227v1) - v1229v1 = get_local __ptr { u64, ( () | u64 ) }, __for_value_opt_1 - mem_copy_val v1229v1, v1227v1 - v1231v1 = get_local __ptr { u64, ( () | u64 ) }, __for_value_opt_1 - v1232v1 = const u64 0 - v1233v1 = get_elem_ptr v1231v1, __ptr u64, v1232v1 - v1234v1 = get_local __ptr u64, other_ - v1235v1 = const u64 1 - store v1235v1 to v1234v1 - v1237v1 = load v1233v1 - v1238v1 = get_local __ptr u64, other_ - v1239v1 = load v1238v1 - v1240v1 = cmp eq v1237v1 v1239v1 - v1241v1 = const bool false - cbr v1240v1, is_none_22_block2(v1241v1), is_none_22_block1() + v1148v1 = get_local __ptr { { { ptr, u64 }, u64 }, u64 }, __for_iterable_2 + v1149v1 = get_local __ptr { u64, ( () | u64 ) }, __ret_val + v1150v1 = call next_17(v1148v1, v1149v1) + v1151v1 = get_local __ptr { u64, ( () | u64 ) }, __for_value_opt_1 + mem_copy_val v1151v1, v1149v1 + v1153v1 = get_local __ptr { u64, ( () | u64 ) }, __for_value_opt_1 + v1154v1 = const u64 0 + v1155v1 = get_elem_ptr v1153v1, __ptr u64, v1154v1 + v1156v1 = get_local __ptr u64, other_ + v1157v1 = const u64 1 + store v1157v1 to v1156v1 + v1159v1 = load v1155v1 + v1160v1 = get_local __ptr u64, other_ + v1161v1 = load v1160v1 + v1162v1 = cmp eq v1159v1 v1161v1 + v1163v1 = const bool false + cbr v1162v1, is_none_22_block2(v1163v1), is_none_22_block1() is_none_22_block1(): - v1243v1 = const bool true - br is_none_22_block2(v1243v1) + v1165v1 = const bool true + br is_none_22_block2(v1165v1) - is_none_22_block2(v1209v1: bool): - cbr v1209v1, end_while(), block1() + is_none_22_block2(v1131v1: bool): + cbr v1131v1, end_while(), block1() block1(): - v1246v1 = get_local __ptr { u64, ( () | u64 ) }, __for_value_opt_1 - v1247v1 = call unwrap_23(v1246v1) - v1248v1 = get_local __ptr u64, n - store v1247v1 to v1248v1 - v1250v1 = get_local __ptr u64, i - v1251v1 = get_local __ptr u64, n - v1252v1 = load v1251v1 - v1253v1 = load v1250v1 - v1254v1 = cmp eq v1252v1 v1253v1 - v1255v1 = get_local __ptr bool, condition_ - store v1254v1 to v1255v1 - v1257v1 = get_local __ptr bool, condition_ - v1258v1 = load v1257v1 - v1259v1 = const bool false - v1260v1 = cmp eq v1258v1 v1259v1 - cbr v1260v1, assert_25_block0(), assert_25_block1() - - assert_25_block0(): - v1262v1 = get_global __ptr u64, std::error_signals::FAILED_ASSERT_SIGNAL - v1263v1 = get_local __ptr u64, code_ - mem_copy_val v1263v1, v1262v1 - v1265v1 = get_local __ptr u64, code_ - v1266v1 = load v1265v1 - revert v1266v1 - - assert_25_block1(): - v1268v1 = get_local __ptr u64, i - v1269v1 = get_local __ptr u64, other_0 - v1270v1 = const u64 1 - store v1270v1 to v1269v1 - v1272v1 = load v1268v1 - v1273v1 = get_local __ptr u64, other_0 - v1274v1 = load v1273v1 - v1275v1 = add v1272v1, v1274v1 - v1276v1 = get_local __ptr u64, i - store v1275v1 to v1276v1 + v1168v1 = get_local __ptr { u64, ( () | u64 ) }, __for_value_opt_1 + v1169v1 = call unwrap_23(v1168v1) + v1170v1 = get_local __ptr u64, n + store v1169v1 to v1170v1 + v1172v1 = get_local __ptr u64, i + v1173v1 = get_local __ptr u64, n + v1174v1 = load v1173v1 + v1175v1 = load v1172v1 + v1176v1 = cmp eq v1174v1 v1175v1 + v1177v1 = call assert_25(v1176v1) + v1178v1 = get_local __ptr u64, i + v1179v1 = get_local __ptr u64, other_0 + v1180v1 = const u64 1 + store v1180v1 to v1179v1 + v1182v1 = load v1178v1 + v1183v1 = get_local __ptr u64, other_0 + v1184v1 = load v1183v1 + v1185v1 = add v1182v1, v1184v1 + v1186v1 = get_local __ptr u64, i + store v1185v1 to v1186v1 br while() end_while(): - v1279v1 = get_local __ptr u64, i - v1280v1 = get_local __ptr u64, other_1 - v1281v1 = const u64 5 - store v1281v1 to v1280v1 - v1283v1 = load v1279v1 - v1284v1 = get_local __ptr u64, other_1 - v1285v1 = load v1284v1 - v1286v1 = cmp eq v1283v1 v1285v1 - v1287v1 = call assert_25(v1286v1) - v1288v1 = const unit () - ret () v1288v1 + v1189v1 = get_local __ptr u64, i + v1190v1 = get_local __ptr u64, other_1 + v1191v1 = const u64 5 + store v1191v1 to v1190v1 + v1193v1 = load v1189v1 + v1194v1 = get_local __ptr u64, other_1 + v1195v1 = load v1194v1 + v1196v1 = cmp eq v1193v1 v1195v1 + v1197v1 = call assert_25(v1196v1) + v1198v1 = const unit () + ret () v1198v1 } @@ -122,10 +104,10 @@ fn just_for_loop_15(vector: __ptr { { ptr, u64 }, u64 }) -> () { pshh i531456 ; [fn init: just_for_loop_15]: push used high registers 40..64 move $$locbase $sp ; [fn init: just_for_loop_15]: set locals base register -cfei i152 ; [fn init: just_for_loop_15]: allocate: locals 152 byte(s), call args 0 slot(s) +cfei i136 ; [fn init: just_for_loop_15]: allocate: locals 136 byte(s), call args 0 slot(s) move $r0 $$arg0 ; [fn init: just_for_loop_15]: copy argument 0 (vector) move $r1 $$reta ; [fn init: just_for_loop_15]: save return address -sw $$locbase $zero i14 ; store word +sw $$locbase $zero i12 ; store word addi $r2 $$locbase i64 ; get offset to local __ptr { { { ptr, u64 }, u64 }, u64 } mcpi $r2 $r0 i24 ; copy memory sw $$locbase $zero i11 ; store word @@ -133,49 +115,40 @@ mcpi $$locbase $r2 i32 ; copy memory addi $r0 $$locbase i48 ; get offset to local __ptr { u64, ( () | u64 ) } move $$arg0 $$locbase ; [call: next_17]: pass argument 0 move $$arg1 $r0 ; [call: next_17]: pass argument 1 -jal $$reta $pc i47 ; [call: next_17]: call function +jal $$reta $pc i37 ; [call: next_17]: call function addi $r2 $$locbase i32 ; get offset to local __ptr { u64, ( () | u64 ) } mcpi $r2 $r0 i16 ; copy memory -sw $$locbase $one i16 ; store word +sw $$locbase $one i14 ; store word lw $r0 $$locbase i4 ; load word -lw $r2 $$locbase i16 ; load word +lw $r2 $$locbase i14 ; load word eq $r0 $r0 $r2 movi $r2 i0 ; move parameter from branch to block argument jnzf $r0 $zero i1 movi $r2 i1 ; move parameter from branch to block argument -jnzf $r2 $zero i25 +jnzf $r2 $zero i15 addi $r0 $$locbase i32 ; get offset to local __ptr { u64, ( () | u64 ) } move $$arg0 $r0 ; [call: unwrap_23]: pass argument 0 -jal $$reta $pc i120 ; [call: unwrap_23]: call function -sw $$locbase $$retv i15 ; store word -lw $r0 $$locbase i15 ; load word -lw $r2 $$locbase i14 ; load word +jal $$reta $pc i110 ; [call: unwrap_23]: call function +sw $$locbase $$retv i13 ; store word +lw $r0 $$locbase i13 ; load word +lw $r2 $$locbase i12 ; load word eq $r0 $r0 $r2 -addi $r2 $$locbase i104 ; get offset to local __ptr bool -sb $r2 $r0 i0 ; store byte -addi $r0 $$locbase i104 ; get offset to local __ptr bool -lb $r0 $r0 i0 ; load byte -eq $r0 $r0 $zero -jnzf $r0 $zero i6 -sw $$locbase $one i17 ; store word -lw $r0 $$locbase i14 ; load word -lw $r2 $$locbase i17 ; load word -add $r0 $r0 $r2 -sw $$locbase $r0 i14 ; store word -jmpb $zero i31 -addr $r0 data_NonConfigurable_0; get std::error_signals::FAILED_ASSERT_SIGNAL's address in data section -addi $r1 $$locbase i96 ; get offset to local __ptr u64 -mcpi $r1 $r0 i8 ; copy memory +move $$arg0 $r0 ; [call: assert_25]: pass argument 0 +jal $$reta $pc i121 ; [call: assert_25]: call function +sw $$locbase $one i15 ; store word lw $r0 $$locbase i12 ; load word -rvrt $r0 +lw $r2 $$locbase i15 ; load word +add $r0 $r0 $r2 +sw $$locbase $r0 i12 ; store word +jmpb $zero i27 movi $r0 i5 ; initialize constant into register -sw $$locbase $r0 i18 ; store word -lw $r0 $$locbase i14 ; load word -lw $r2 $$locbase i18 ; load word +sw $$locbase $r0 i16 ; store word +lw $r0 $$locbase i12 ; load word +lw $r2 $$locbase i16 ; load word eq $r0 $r0 $r2 move $$arg0 $r0 ; [call: assert_25]: pass argument 0 jal $$reta $pc i108 ; [call: assert_25]: call function -cfsi i152 ; [fn end: just_for_loop_15] free: locals 152 byte(s), call args 0 slot(s) +cfsi i136 ; [fn end: just_for_loop_15] free: locals 136 byte(s), call args 0 slot(s) move $$reta $r1 ; [fn end: just_for_loop_15] restore return address poph i531456 ; [fn end: just_for_loop_15]: restore used high registers 40..64 jal $zero $$reta i0 ; [fn end: just_for_loop_15] return from call diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/stdlib/vec_encoding_decoding/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/stdlib/vec_encoding_decoding/stdout.snap index e3c968b3a73..13df4ed4863 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/stdlib/vec_encoding_decoding/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/stdlib/vec_encoding_decoding/stdout.snap @@ -7,27 +7,27 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/stdlib/vec_encoding_decoding Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-vec) Compiling script vec_encoding_decoding (test/src/e2e_vm_tests/test_programs/should_pass/stdlib/vec_encoding_decoding) - Finished release [optimized + fuel] target(s) [10.736 KB] in ??? + Finished release [optimized + fuel] target(s) [10.744 KB] in ??? Running 6 tests, filtered 0 tests tested -- vec_encoding_decoding - test vec_trivial ... ok (???, 2877 gas) + test vec_trivial ... ok (???, 2904 gas) decoded log values: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], log rb: 15402277555065905665 - test nested_vec_trivial ... ok (???, 19176 gas) + test nested_vec_trivial ... ok (???, 19431 gas) decoded log values: [[], [0], [0, 1], [0, 1, 2], [0, 1, 2, 3], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4, 5], [0, 1, 2, 3, 4, 5, 6], [0, 1, 2, 3, 4, 5, 6, 7], [0, 1, 2, 3, 4, 5, 6, 7, 8]], log rb: 7518769745117093018 - test vec_non_trivial ... ok (???, 7003 gas) + test vec_non_trivial ... ok (???, 7028 gas) decoded log values: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], log rb: 1424139416812312134 - test nested_vec_non_trivial ... ok (???, 35971 gas) + test nested_vec_non_trivial ... ok (???, 36229 gas) decoded log values: [[], [0], [0, 1], [0, 1, 2], [0, 1, 2, 3], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4, 5], [0, 1, 2, 3, 4, 5, 6], [0, 1, 2, 3, 4, 5, 6, 7], [0, 1, 2, 3, 4, 5, 6, 7, 8]], log rb: 16171443785104013487 test vec_encode_zst ... ok (???, 2750 gas) decoded log values: [(), (), (), (), (), (), (), (), (), ()], log rb: 7172587179247292377 - test nested_vec_zst ... ok (???, 18886 gas) + test nested_vec_zst ... ok (???, 18906 gas) decoded log values: [[], [()], [(), ()], [(), (), ()], [(), (), (), ()], [(), (), (), (), ()], [(), (), (), (), (), ()], [(), (), (), (), (), (), ()], [(), (), (), (), (), (), (), ()], [(), (), (), (), (), (), (), (), ()]], log rb: 15095959372321865352 diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call/stdout.snap index fa642455791..e7d201349ab 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call/stdout.snap @@ -10,6 +10,7 @@ output: <<<<<<< HEAD <<<<<<< HEAD <<<<<<< HEAD +<<<<<<< HEAD <<<<<<< HEAD Finished release [optimized + fuel] target(s) [19.408 KB] in ??? ======= @@ -24,6 +25,9 @@ output: ======= Finished release [optimized + fuel] target(s) [24.944 KB] in ??? >>>>>>> 7e62d56dc (fix justfile for mac) +======= + Finished release [optimized + fuel] target(s) [24.824 KB] in ??? +>>>>>>> a53b41c32 (update tests) Running 33 tests, filtered 0 tests tested -- const_of_contract_call @@ -31,6 +35,7 @@ tested -- const_of_contract_call <<<<<<< HEAD <<<<<<< HEAD <<<<<<< HEAD +<<<<<<< HEAD <<<<<<< HEAD test cost_of_in_bool ... ok (???, 1736 gas) test cost_of_in_u8 ... ok (???, 1704 gas) @@ -68,6 +73,8 @@ tested -- const_of_contract_call ======= ======= >>>>>>> b4cdcf291 (update tests) +======= +>>>>>>> a53b41c32 (update tests) test cost_of_in_bool ... ok (???, 1804 gas) test cost_of_in_u8 ... ok (???, 1772 gas) test cost_of_in_u16 ... ok (???, 1937 gas) @@ -102,6 +109,7 @@ tested -- const_of_contract_call test order_args_without_trivial_enum ... ok (???, 3248 gas) test order_args_with_trivial_enum ... ok (???, 3460 gas) <<<<<<< HEAD +<<<<<<< HEAD >>>>>>> a94b693b4 (update tests) ======= ======= @@ -145,6 +153,8 @@ tested -- const_of_contract_call >>>>>>> b4cdcf291 (update tests) ======= >>>>>>> 7e62d56dc (fix justfile for mac) +======= +>>>>>>> a53b41c32 (update tests) test result: OK. 33 passed; 0 failed; finished in ??? diff --git a/test/src/sdk-harness/test_projects/auth/mod.rs b/test/src/sdk-harness/test_projects/auth/mod.rs index 3236d65d173..f940f5599ee 100644 --- a/test/src/sdk-harness/test_projects/auth/mod.rs +++ b/test/src/sdk-harness/test_projects/auth/mod.rs @@ -573,7 +573,11 @@ async fn can_get_predicate_address() { // Setup predicate. let hex_predicate_address: &str = +<<<<<<< HEAD "0x9b58a6d21eae9e75c6a1cbe9798ddcfda696454d1871b92506293363950d7259"; // AUTO-PREDICATE-ID auth_predicate test/src/sdk-harness --release --output-directory test/src/sdk-harness/out +======= + "0xe86adf2bd43b8e94ea23426964c6de393a930ce83c8174cccb9e7f6297b7abec"; +>>>>>>> a53b41c32 (update tests) let predicate_address = Address::from_str(hex_predicate_address).expect("failed to create Address from string"); let predicate_data = AuthPredicateEncoder::default() @@ -696,7 +700,11 @@ async fn when_incorrect_predicate_address_passed() { async fn can_get_predicate_address_in_message() { // Setup predicate address. let hex_predicate_address: &str = +<<<<<<< HEAD "0x9b58a6d21eae9e75c6a1cbe9798ddcfda696454d1871b92506293363950d7259"; // AUTO-PREDICATE-ID auth_predicate test/src/sdk-harness --release --output-directory test/src/sdk-harness/out +======= + "0xe86adf2bd43b8e94ea23426964c6de393a930ce83c8174cccb9e7f6297b7abec"; +>>>>>>> a53b41c32 (update tests) let predicate_address = Address::from_str(hex_predicate_address).expect("failed to create Address from string"); From 15d14242b1ed42f790c04f2337ecede024a35f16 Mon Sep 17 00:00:00 2001 From: xunilrj Date: Thu, 11 Jun 2026 09:07:36 -0300 Subject: [PATCH 27/42] update tests --- sway-ir/src/analysis/loop_analysis.rs | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/sway-ir/src/analysis/loop_analysis.rs b/sway-ir/src/analysis/loop_analysis.rs index 0ac0f859148..01e06717b60 100644 --- a/sway-ir/src/analysis/loop_analysis.rs +++ b/sway-ir/src/analysis/loop_analysis.rs @@ -242,17 +242,17 @@ ret () v202v1 expect_test::expect![[r#" LoopAnalysis { block_to_loops: { - "while": [ + "while_body": [ 0, ], - "while_body": [ + "while": [ 0, ], }, loops: { 0: [ - "while", "while_body", + "while", ], }, }"#]] @@ -375,29 +375,29 @@ ret () v1198v1 expect_test::expect![[r#" LoopAnalysis { block_to_loops: { - "is_none_22_block2": [ + "while": [ 0, ], - "block1": [ + "while_body": [ 0, ], - "while": [ + "block1": [ 0, ], "is_none_22_block1": [ 0, ], - "while_body": [ + "is_none_22_block2": [ 0, ], }, loops: { 0: [ + "while_body", "block1", + "is_none_22_block1", "is_none_22_block2", "while", - "while_body", - "is_none_22_block1", ], }, }"#]] From 0857beb5433084a8ad7c64150934003906fd58cf Mon Sep 17 00:00:00 2001 From: xunilrj Date: Thu, 11 Jun 2026 09:08:41 -0300 Subject: [PATCH 28/42] fix typo --- sway-ir/src/analysis/loop_analysis.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sway-ir/src/analysis/loop_analysis.rs b/sway-ir/src/analysis/loop_analysis.rs index 01e06717b60..ef678d39d5d 100644 --- a/sway-ir/src/analysis/loop_analysis.rs +++ b/sway-ir/src/analysis/loop_analysis.rs @@ -91,9 +91,9 @@ fn compute_loop_analysis( for block in po.po_to_block.iter() { for branch in block.successors(context) { - let sucessor = branch.block; - if dom_tree.dominates(sucessor, *block) { - back_edges.push((*block, sucessor)); + let successor = branch.block; + if dom_tree.dominates(successor, *block) { + back_edges.push((*block, successor)); } } } From b6843d5bcba498c3d1180b4ea400ced8dad7f679 Mon Sep 17 00:00:00 2001 From: xunilrj Date: Thu, 11 Jun 2026 11:43:20 -0300 Subject: [PATCH 29/42] update tests --- sway-ir/src/analysis/loop_analysis.rs | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/sway-ir/src/analysis/loop_analysis.rs b/sway-ir/src/analysis/loop_analysis.rs index ef678d39d5d..f66b4b93eef 100644 --- a/sway-ir/src/analysis/loop_analysis.rs +++ b/sway-ir/src/analysis/loop_analysis.rs @@ -1,4 +1,4 @@ -use std::collections::{HashMap, HashSet}; +use std::collections::{BTreeMap, HashMap, HashSet}; use crate::{ AnalysisResult, AnalysisResultT, AnalysisResults, Block, Context, DebugWithContext, DomTree, @@ -40,13 +40,14 @@ impl DebugWithContext for LoopAnalysis { fn fmt_with_context(&self, f: &mut std::fmt::Formatter, context: &Context) -> std::fmt::Result { let mut block_to_loops = HashMap::new(); - // This is fine because this is used only for debug - #[allow(clippy::iter_over_hash_type)] - for (block, loops) in self.block_to_loops.iter() { + let mut keys = self.block_to_loops.keys().collect::>(); + keys.sort_by_key(|b| b.0); + for block in keys { + let loops = self.block_to_loops.get(block).expect("key not found"); block_to_loops.insert(block.get_label(context), loops); } - let mut loops = HashMap::new(); + let mut loops = BTreeMap::new(); for (idx, l) in self.loops.iter().enumerate() { let blocks = l .blocks @@ -242,10 +243,10 @@ ret () v202v1 expect_test::expect![[r#" LoopAnalysis { block_to_loops: { - "while_body": [ + "while": [ 0, ], - "while": [ + "while_body": [ 0, ], }, @@ -393,11 +394,11 @@ ret () v1198v1 }, loops: { 0: [ - "while_body", "block1", - "is_none_22_block1", "is_none_22_block2", "while", + "while_body", + "is_none_22_block1", ], }, }"#]] From d02031b00659bcdd3535922208869a5e0372fcec Mon Sep 17 00:00:00 2001 From: xunilrj Date: Thu, 11 Jun 2026 11:44:03 -0300 Subject: [PATCH 30/42] update tests --- sway-ir/src/analysis/loop_analysis.rs | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/sway-ir/src/analysis/loop_analysis.rs b/sway-ir/src/analysis/loop_analysis.rs index f66b4b93eef..7db9514f060 100644 --- a/sway-ir/src/analysis/loop_analysis.rs +++ b/sway-ir/src/analysis/loop_analysis.rs @@ -38,7 +38,7 @@ impl LoopAnalysis { impl DebugWithContext for LoopAnalysis { fn fmt_with_context(&self, f: &mut std::fmt::Formatter, context: &Context) -> std::fmt::Result { - let mut block_to_loops = HashMap::new(); + let mut block_to_loops = BTreeMap::new(); let mut keys = self.block_to_loops.keys().collect::>(); keys.sort_by_key(|b| b.0); @@ -376,29 +376,29 @@ ret () v1198v1 expect_test::expect![[r#" LoopAnalysis { block_to_loops: { - "while": [ + "block1": [ 0, ], - "while_body": [ + "is_none_22_block1": [ 0, ], - "block1": [ + "is_none_22_block2": [ 0, ], - "is_none_22_block1": [ + "while": [ 0, ], - "is_none_22_block2": [ + "while_body": [ 0, ], }, loops: { 0: [ + "is_none_22_block1", "block1", - "is_none_22_block2", - "while", "while_body", - "is_none_22_block1", + "while", + "is_none_22_block2", ], }, }"#]] From abfa7dde6bb89ed7a36c3caba5d7b447795c8d90 Mon Sep 17 00:00:00 2001 From: xunilrj Date: Thu, 11 Jun 2026 11:44:47 -0300 Subject: [PATCH 31/42] update tests --- sway-ir/src/analysis/loop_analysis.rs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/sway-ir/src/analysis/loop_analysis.rs b/sway-ir/src/analysis/loop_analysis.rs index 7db9514f060..c99b9743d79 100644 --- a/sway-ir/src/analysis/loop_analysis.rs +++ b/sway-ir/src/analysis/loop_analysis.rs @@ -49,11 +49,12 @@ impl DebugWithContext for LoopAnalysis { let mut loops = BTreeMap::new(); for (idx, l) in self.loops.iter().enumerate() { - let blocks = l + let mut blocks = l .blocks .iter() .map(|x| x.get_label(context)) .collect::>(); + blocks.sort(); loops.insert(idx, blocks); } @@ -252,8 +253,8 @@ ret () v202v1 }, loops: { 0: [ - "while_body", "while", + "while_body", ], }, }"#]] @@ -394,11 +395,11 @@ ret () v1198v1 }, loops: { 0: [ - "is_none_22_block1", "block1", - "while_body", - "while", + "is_none_22_block1", "is_none_22_block2", + "while", + "while_body", ], }, }"#]] From 9cee248813d1ba3e2c935da869abb57c392cceca Mon Sep 17 00:00:00 2001 From: Daniel Frederico Lins Leite Date: Wed, 8 Jul 2026 13:56:44 -0300 Subject: [PATCH 32/42] update tests --- sway-ir/src/pass_manager.rs | 8 - .../language/array/array_repeat/stdout.snap | 284 --- .../language/const_generics/stdout.snap | 4 - .../language/eq_custom_type/stdout.snap | 70 +- .../language/for_loops/stdout.snap | 6 +- .../language/intrinsics/dbg/stdout.snap | 24 - .../intrinsics/dbg_release/stdout.snap | 16 - .../language/intrinsics/transmute/stdout.snap | 4 - .../should_pass/language/logging/stdout.snap | 1001 +--------- .../main_args/main_args_ref/stdout.snap | 19 - .../main_args/main_args_two_u64/stdout.snap | 61 - .../main_args_various_types/stdout.snap | 1626 ----------------- .../match_expressions_all/stdout.snap | 77 - .../panic_handling_in_unit_tests/stdout.snap | 38 - .../panicking_contract/stdout.snap | 52 - .../panicking_lib/stdout.snap | 48 - .../const_of_contract_call/stdout.snap | 174 -- 17 files changed, 12 insertions(+), 3500 deletions(-) diff --git a/sway-ir/src/pass_manager.rs b/sway-ir/src/pass_manager.rs index 388793e4bed..d4c5ae30f97 100644 --- a/sway-ir/src/pass_manager.rs +++ b/sway-ir/src/pass_manager.rs @@ -404,16 +404,10 @@ impl PassManager { let mut global_modified = false; -<<<<<<< HEAD // Make it easy for tests to run IR verification in all steps let force_verify: String = std::env::var("SWAY_FORCE_VERIFY_IR").unwrap_or_else(|_| "false".to_string()); let force_verify: bool = force_verify.parse().unwrap_or(false); -======= - // 10 here just to avoid infinite running - for _ in 0..10 { - let mut modified = false; ->>>>>>> ab552eebc (finishing up PR) for _ in 0..2 { let mut iter_modified = false; @@ -461,8 +455,6 @@ impl PassManager { if !iter_modified { break; } - - global_modified |= modified; } if print_opts.r#final { diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/array/array_repeat/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/array/array_repeat/stdout.snap index 9601d089dee..f19917478f6 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/array/array_repeat/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/array/array_repeat/stdout.snap @@ -243,7 +243,6 @@ script { local slice data_ local slice s -<<<<<<< HEAD entry(mut __ret_value: __ptr [u8; 1]): v247v1 = get_local __ptr [u8; 1], __array_init_0, !104 v880v1 = const u64 0 @@ -268,43 +267,6 @@ script { v1652v1 = asm(size: v266v1, src: v2089v1) -> __ptr [u8; 1] hp, !116 { aloc size, !117 mcp hp src size, !118 -======= - entry(__ret_value: __ptr [u8; 1]): - v244v1 = get_local __ptr [u8; 1], __array_init_0, !105 - v874v1 = const u64 0 - v875v1 = get_elem_ptr v244v1, __ptr u8, v874v1, !105 - v245v1 = const u8 255, !106 - store v245v1 to v875v1, !105 - v1919v1 = get_local __ptr [u8; 1], __array_init_0 - v2037v1 = get_local __ptr slice, __ret_val - v2038v1 = call to_slice_20(v1919v1, v2037v1) - v249v1 = get_local __ptr slice, s, !107 - mem_copy_val v249v1, v2037v1 - v1893v1 = get_local __ptr slice, s, !115 - v1895v1 = get_local __ptr slice, slice_0, !118 - mem_copy_val v1895v1, v1893v1 - v1897v1 = get_local __ptr slice, slice_0, !120 - v2040v1 = asm(ptr: v1897v1) -> __ptr { ptr, u64 } ptr { - } - v2076v1 = const u64 0 - v2077v1 = get_elem_ptr v2040v1, __ptr ptr, v2076v1 - v2078v1 = load v2077v1 - v2079v1 = const u64 1 - v2080v1 = get_elem_ptr v2040v1, __ptr u64, v2079v1 - v2081v1 = load v2080v1 - v1899v1 = get_local __ptr { ptr, u64 }, __anon_00, !121 - v2090v1 = const u64 0 - v2091v1 = get_elem_ptr v1899v1, __ptr ptr, v2090v1 - store v2078v1 to v2091v1 - v2093v1 = const u64 1 - v2094v1 = get_elem_ptr v1899v1, __ptr u64, v2093v1 - store v2081v1 to v2094v1 - v1902v1 = load v2091v1, !121 - v263v1 = const u64 1 - v1628v1 = asm(size: v263v1, src: v1902v1) -> __ptr [u8; 1] hp, !123 { - aloc size, !124 - mcp hp src size, !125 ->>>>>>> a94b693b4 (update tests) } v2096v1 = const u64 0 v2097v1 = get_elem_ptr v1652v1, __ptr u8, v2096v1 @@ -316,19 +278,13 @@ script { ret () v2031v1 } -<<<<<<< HEAD fn to_slice_20(mut array: __ptr [u8; 1], mut __ret_value: __ptr slice) -> (), !121 { local { ptr, u64 } __anon_0 -======= - fn to_slice_20(array: __ptr [u8; 1], __ret_value: __ptr slice) -> (), !128 { - local mut slice __aggr_memcpy_0 ->>>>>>> a94b693b4 (update tests) local [u8; 1] array_ entry(array: __ptr [u8; 1], mut __ret_value: __ptr slice): v197v1 = get_local __ptr [u8; 1], array_ mem_copy_val v197v1, array -<<<<<<< HEAD v242v1 = cast_ptr v197v1 to ptr, !122 v929v1 = get_local __ptr { ptr, u64 }, __anon_0, !126 v883v1 = const u64 0 @@ -345,34 +301,10 @@ script { } pub fn log_47(mut value !138: u8) -> (), !141 { -======= - v238v1 = get_local __ptr [u8; 1], array_, !129 - v239v1 = cast_ptr v238v1 to ptr, !130 - v934v1 = get_local __ptr { ptr, u64 }, parts_, !135 - v2112v1 = const u64 0 - v2113v1 = get_elem_ptr v934v1, __ptr ptr, v2112v1 - store v239v1 to v2113v1 - v2115v1 = const u64 1 - v2116v1 = get_elem_ptr v934v1, __ptr u64, v2115v1 - v927v1 = const u64 1, !138 - store v927v1 to v2116v1 - v936v1 = get_local __ptr { ptr, u64 }, parts_, !140 - v2042v1 = asm(ptr: v936v1) -> __ptr slice ptr { - } - v2071v1 = get_local __ptr slice, __aggr_memcpy_0 - mem_copy_val v2071v1, v2042v1 - mem_copy_val __ret_value, v2071v1 - v2035v1 = const unit () - ret () v2035v1 - } - - pub fn log_47(value !142: u8) -> (), !145 { ->>>>>>> a94b693b4 (update tests) local { __ptr u8, u64 } __anon_0 local slice __log_arg local u8 value_ -<<<<<<< HEAD entry(mut value: u8): v638v1 = get_local __ptr u8, value_ store value to v638v1 @@ -391,28 +323,6 @@ script { log __ptr slice v2043v1, v781v1 v785v1 = const unit () ret () v785v1 -======= - entry(value: u8): - v632v1 = get_local __ptr u8, value_ - store value to v632v1 - v773v1 = get_local __ptr u8, value_, !146 - v1821v1 = get_local __ptr { __ptr u8, u64 }, __anon_0, !148 - v889v1 = const u64 0 - v1824v1 = get_elem_ptr v1821v1, __ptr __ptr u8, v889v1, !149 - store v773v1 to v1824v1, !150 - v892v1 = const u64 1 - v1826v1 = get_elem_ptr v1821v1, __ptr u64, v892v1, !151 - v642v1 = const u64 1 - store v642v1 to v1826v1, !152 - v1829v1 = get_local __ptr { __ptr u8, u64 }, __anon_0, !146 - v1831v1 = cast_ptr v1829v1 to __ptr slice, !146 - v2044v1 = get_local __ptr slice, __log_arg - mem_copy_val v2044v1, v1831v1 - v775v1 = const u64 14454674236531057292 - log __ptr slice v2044v1, v775v1 - v779v1 = const unit () - ret () v779v1 ->>>>>>> a94b693b4 (update tests) } } @@ -433,7 +343,6 @@ script { !14 = span !10 2928 2954 !15 = fn_call_path_span !10 2928 2952 !16 = (!14 !15) -<<<<<<< HEAD !17 = span !10 3038 3039 !18 = span !10 3032 3040 !19 = span !10 3042 3047 @@ -566,144 +475,6 @@ script { !146 = (!142 !143) !147 = (!142 !143) !148 = (!142 !143) -======= -!17 = span !10 3032 3037 -!18 = span !10 3038 3039 -!19 = span !10 3032 3040 -!20 = span !10 3042 3047 -!21 = span !10 3022 3048 -!22 = fn_call_path_span !10 3022 3031 -!23 = "test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-assert/src/assert.sw" -!24 = span !23 1863 1871 -!25 = fn_call_path_span !23 1866 1868 -!26 = "test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-assert/src/ops.sw" -!27 = span !26 15555 15569 -!28 = fn_call_path_span !26 15560 15562 -!29 = (!21 !22 !24 !25 !27 !28) -!30 = span !26 12573 12578 -!31 = span !26 15554 15576 -!32 = fn_call_path_span !26 15571 15574 -!33 = (!21 !22 !24 !25 !31 !32) -!34 = (!21 !22 !24) -!35 = span !23 1883 1890 -!36 = fn_call_path_span !23 1883 1886 -!37 = (!21 !22 !35 !36) -!38 = span !23 1900 1907 -!39 = fn_call_path_span !23 1900 1903 -!40 = (!21 !22 !38 !39) -!41 = span !23 1917 1948 -!42 = fn_call_path_span !23 1917 1923 -!43 = "test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-assert/src/revert.sw" -!44 = span !43 757 771 -!45 = (!21 !22 !41 !42 !44) -!46 = span !10 58 117 -!47 = fn_name_span !10 61 87 -!48 = inline "never" -!49 = (!46 !47 !48) -!50 = span !10 107 115 -!51 = span !10 220 282 -!52 = fn_name_span !10 223 250 -!53 = (!51 !52 !48) -!54 = span !10 271 280 -!55 = span !10 725 855 -!56 = fn_name_span !10 728 756 -!57 = (!55 !56 !48) -!58 = span !10 778 853 -!59 = span !10 1030 1156 -!60 = fn_name_span !10 1033 1061 -!61 = (!59 !60 !48) -!62 = span !10 1083 1154 -!63 = span !10 1327 1392 -!64 = fn_name_span !10 1330 1358 -!65 = (!63 !64 !48) -!66 = span !10 1380 1390 -!67 = span !10 135 194 -!68 = fn_name_span !10 138 162 -!69 = (!67 !68 !48) -!70 = span !10 183 192 -!71 = span !10 468 530 -!72 = fn_name_span !10 471 496 -!73 = (!71 !72 !48) -!74 = span !10 518 528 -!75 = span !10 873 1003 -!76 = fn_name_span !10 876 902 -!77 = (!75 !76 !48) -!78 = span !10 925 1001 -!79 = span !10 1174 1300 -!80 = fn_name_span !10 1177 1203 -!81 = (!79 !80 !48) -!82 = span !10 1226 1298 -!83 = span !10 1410 1475 -!84 = fn_name_span !10 1413 1439 -!85 = (!83 !84 !48) -!86 = span !10 1462 1473 -!87 = span !10 1536 1590 -!88 = fn_name_span !10 1539 1557 -!89 = (!87 !88 !48) -!90 = span !10 1579 1588 -!91 = span !10 1633 1687 -!92 = fn_name_span !10 1636 1652 -!93 = (!91 !92 !48) -!94 = span !10 1675 1685 -!95 = span !10 1781 1852 -!96 = fn_name_span !10 1784 1812 -!97 = (!95 !96 !48) -!98 = span !10 1837 1850 -!99 = span !10 1947 2196 -!100 = fn_name_span !10 1950 1974 -!101 = (!99 !100 !48) -!102 = span !10 3070 3173 -!103 = fn_name_span !10 3073 3085 -!104 = (!102 !103 !48) -!105 = span !10 3133 3140 -!106 = span !10 3134 3139 -!107 = span !10 3105 3142 -!108 = span !10 3147 3171 -!109 = fn_call_path_span !10 3147 3157 -!110 = "test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-assert/src/codec.sw" -!111 = span !110 57044 57054 -!112 = fn_call_path_span !110 57049 57052 -!113 = "test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-assert/src/raw_slice.sw" -!114 = span !113 3732 3736 -!115 = (!108 !109 !111 !112 !114) -!116 = span !113 3721 3737 -!117 = fn_call_path_span !113 3721 3731 -!118 = (!108 !109 !111 !112 !116 !117) -!119 = span !113 1685 1690 -!120 = (!108 !109 !111 !112 !116 !117 !119) -!121 = (!108 !109 !111 !112) -!122 = span !110 57023 57138 -!123 = (!108 !109 !122) -!124 = span !110 57070 57079 -!125 = span !110 57093 57108 -!126 = span !10 3192 3320 -!127 = fn_name_span !10 3195 3203 -!128 = (!126 !127 !48) -!129 = span !10 3306 3311 -!130 = span !10 3296 3312 -!131 = span !10 3268 3318 -!132 = fn_call_path_span !10 3268 3289 -!133 = span !113 2403 2446 -!134 = fn_call_path_span !113 2403 2413 -!135 = (!131 !132 !133 !134) -!136 = span !113 2420 2444 -!137 = fn_call_path_span !113 2426 2427 -!138 = (!131 !132 !136 !137) -!139 = span !113 1309 1314 -!140 = (!131 !132 !133 !134 !139) -!141 = "test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-assert/src/logging.sw" -!142 = span !141 591 596 -!143 = span !141 577 651 -!144 = fn_name_span !141 584 587 -!145 = (!143 !144) -!146 = span !141 642 647 -!147 = span !110 56206 56218 -!148 = (!146 !147) -!149 = (!146 !147) -!150 = (!146 !147) -!151 = (!146 !147) -!152 = (!146 !147) ->>>>>>> a94b693b4 (update tests) ;; ASM: Final program ;; Program kind: Script @@ -1285,70 +1056,15 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/language/array/array_repeat Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-assert) Compiling script array_repeat (test/src/e2e_vm_tests/test_programs/should_pass/language/array/array_repeat) -<<<<<<< HEAD -<<<<<<< HEAD -<<<<<<< HEAD -<<<<<<< HEAD -<<<<<<< HEAD Finished release [optimized + fuel] target(s) [1.944 KB] in ??? script array_repeat Bytecode size: 1944 bytes (1.944 KB) Bytecode hash: 0xd84e1f0af96e64ef4c4c098c44c52e6494d47aa0b5eee14850b62bbde99640fb -======= - Finished release [optimized + fuel] target(s) [2.04 KB] in ??? - script array_repeat - Bytecode size: 2040 bytes (2.04 KB) - Bytecode hash: 0x4f9edafab44fe06af95d8e015a91850559d840696e05d6ae80913d7873a73d54 ->>>>>>> a94b693b4 (update tests) -======= - Finished release [optimized + fuel] target(s) [2.152 KB] in ??? - script array_repeat - Bytecode size: 2152 bytes (2.152 KB) - Bytecode hash: 0x77810750c970c763f9a0d60dba74f0cc41bc81a61944521b3e8c305234423f8b ->>>>>>> 2c082a4be (update tests) -======= - Finished release [optimized + fuel] target(s) [2.04 KB] in ??? - script array_repeat - Bytecode size: 2040 bytes (2.04 KB) - Bytecode hash: 0x4f9edafab44fe06af95d8e015a91850559d840696e05d6ae80913d7873a73d54 ->>>>>>> b4cdcf291 (update tests) -======= - Finished release [optimized + fuel] target(s) [2.152 KB] in ??? - script array_repeat - Bytecode size: 2152 bytes (2.152 KB) - Bytecode hash: 0x77810750c970c763f9a0d60dba74f0cc41bc81a61944521b3e8c305234423f8b ->>>>>>> 7e62d56dc (fix justfile for mac) -======= - Finished release [optimized + fuel] target(s) [2.04 KB] in ??? - script array_repeat - Bytecode size: 2040 bytes (2.04 KB) - Bytecode hash: 0x4f9edafab44fe06af95d8e015a91850559d840696e05d6ae80913d7873a73d54 ->>>>>>> a53b41c32 (update tests) Running 1 test, filtered 0 tests tested -- array_repeat -<<<<<<< HEAD -<<<<<<< HEAD -<<<<<<< HEAD -<<<<<<< HEAD -<<<<<<< HEAD test test_array_repeat_zero ... ok (???, 2624891 gas) -======= - test test_array_repeat_zero ... ok (???, 2887161 gas) ->>>>>>> a94b693b4 (update tests) -======= - test test_array_repeat_zero ... ok (???, 2887761 gas) ->>>>>>> 2c082a4be (update tests) -======= - test test_array_repeat_zero ... ok (???, 2887161 gas) ->>>>>>> b4cdcf291 (update tests) -======= - test test_array_repeat_zero ... ok (???, 2887761 gas) ->>>>>>> 7e62d56dc (fix justfile for mac) -======= - test test_array_repeat_zero ... ok (???, 2887161 gas) ->>>>>>> a53b41c32 (update tests) test result: OK. 1 passed; 0 failed; finished in ??? diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/const_generics/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/const_generics/stdout.snap index dc7a4a3cb34..8547ceb51b8 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/const_generics/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/const_generics/stdout.snap @@ -40,11 +40,7 @@ ____ tested -- const_generics -<<<<<<< HEAD test run_main ... ok (???, 17769 gas) -======= - test run_main ... ok (???, 19815 gas) ->>>>>>> a94b693b4 (update tests) debug output: [src/main.sw:154:13] a = [1, 2] [src/main.sw:158:13] [C {}].len() = 1 diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/eq_custom_type/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/eq_custom_type/stdout.snap index a9d6b213537..85f4bcad1d8 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/eq_custom_type/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/eq_custom_type/stdout.snap @@ -1,70 +1,12 @@ --- source: test/src/snapshot/mod.rs --- -> forc build --path test/src/e2e_vm_tests/test_programs/should_pass/stdlib/raw_ptr --release +> forc build --path test/src/e2e_vm_tests/test_programs/should_pass/language/eq_custom_type --release exit status: 0 output: - Building test/src/e2e_vm_tests/test_programs/should_pass/stdlib/raw_ptr - Compiling library std (sway-lib-std) - Compiling script raw_ptr (test/src/e2e_vm_tests/test_programs/should_pass/stdlib/raw_ptr) - Finished release [optimized + fuel] target(s) [2.792 KB] in ??? + Building test/src/e2e_vm_tests/test_programs/should_pass/language/eq_custom_type + Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-option-result) + Compiling script eq_custom_type (test/src/e2e_vm_tests/test_programs/should_pass/language/eq_custom_type) + Finished release [optimized + fuel] target(s) [592 B] in ??? -> forc build --path test/src/e2e_vm_tests/test_programs/should_pass/stdlib/raw_ptr --release --ir final --asm final --bytecode | filter-fn raw_ptr raw_ptr_write - -fn raw_ptr_write_55(ptr: ptr, value: u8) -> () { - entry(ptr: ptr, value: u8): - v665v1 = asm(ptr: ptr, val: value) -> () { - sb ptr val i0 - } - v666v1 = const unit () - ret () v666v1 -} - - -fn raw_ptr_write_61(ptr: ptr, value: u64) -> () { - entry(ptr: ptr, value: u64): - v670v1 = asm(ptr: ptr, val: value) -> () { - sw ptr val i0 - } - v671v1 = const unit () - ret () v671v1 -} - - -fn raw_ptr_write_62(ptr: ptr, value: __ptr { bool, u64 }) -> () { - local { bool, u64 } val_ - - entry(ptr: ptr, value: __ptr { bool, u64 }): - v675v1 = get_local __ptr { bool, u64 }, val_ - mem_copy_val v675v1, value - v677v1 = get_local __ptr { bool, u64 }, val_ - v678v1 = const u64 16 - v679v1 = asm(dst: ptr, src: v677v1, count: v678v1) -> () { - mcp dst src count - } - v680v1 = const unit () - ret () v680v1 -} - - -pshh i524288 ; [fn init: raw_ptr_write_55]: push used high registers 40..64 -sb $$arg0 $$arg1 i0 ; sb ptr val i0 -poph i524288 ; [fn end: raw_ptr_write_55]: restore used high registers 40..64 -jal $zero $$reta i0 ; [fn end: raw_ptr_write_55] return from call - -pshh i524288 ; [fn init: raw_ptr_write_61]: push used high registers 40..64 -sw $$arg0 $$arg1 i0 ; sw ptr val i0 -poph i524288 ; [fn end: raw_ptr_write_61]: restore used high registers 40..64 -jal $zero $$reta i0 ; [fn end: raw_ptr_write_61] return from call - - - -pshh i528384 ; [fn init: raw_ptr_write_62]: push used high registers 40..64 -move $$locbase $sp ; [fn init: raw_ptr_write_62]: set locals base register -cfei i16 ; [fn init: raw_ptr_write_62]: allocate: locals 16 byte(s), call args 0 slot(s) -mcpi $$locbase $$arg1 i16 ; copy memory -movi $r0 i16 ; initialize constant into register -mcp $$arg0 $$locbase $r0 ; mcp dst src count -cfsi i16 ; [fn end: raw_ptr_write_62] free: locals 16 byte(s), call args 0 slot(s) -poph i528384 ; [fn end: raw_ptr_write_62]: restore used high registers 40..64 -jal $zero $$reta i0 ; [fn end: raw_ptr_write_62] return from call +> forc build --path test/src/e2e_vm_tests/test_programs/should_pass/language/eq_custom_type --release --ir final --asm final --bytecode | filter-fn eq_custom_type raw_ptr_write diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/for_loops/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/for_loops/stdout.snap index c64f61dfd48..4359526c731 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/for_loops/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/for_loops/stdout.snap @@ -3,7 +3,7 @@ source: test/src/snapshot/mod.rs --- > forc build --path test/src/e2e_vm_tests/test_programs/should_pass/language/for_loops --ir final --asm final | filter-fn for_loops just_for_loop -fn just_for_loop_15(vector: __ptr { { ptr, u64 }, u64 }) -> () { +fn just_for_loop_15(mut vector: __ptr { { ptr, u64 }, u64 }) -> () { local mut { { { ptr, u64 }, u64 }, u64 } __for_iterable_2 local mut { u64, ( () | u64 ) } __for_value_opt_1 local { u64, ( () | u64 ) } __ret_val @@ -14,7 +14,7 @@ fn just_for_loop_15(vector: __ptr { { ptr, u64 }, u64 }) -> () { local u64 other_0 local u64 other_1 - entry(vector: __ptr { { ptr, u64 }, u64 }): + entry(mut vector: __ptr { { ptr, u64 }, u64 }): v1132v1 = get_local __ptr u64, i v1133v1 = const u64 0 store v1133v1 to v1132v1 @@ -57,7 +57,7 @@ fn just_for_loop_15(vector: __ptr { { ptr, u64 }, u64 }) -> () { v1165v1 = const bool true br is_none_22_block2(v1165v1) - is_none_22_block2(v1131v1: bool): + is_none_22_block2(mut v1131v1: bool): cbr v1131v1, end_while(), block1() block1(): diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg/stdout.snap index da104459687..334dfb25e7f 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg/stdout.snap @@ -71,36 +71,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg Compiling library std (sway-lib-std) Compiling script dbg (test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg) -<<<<<<< HEAD -<<<<<<< HEAD -<<<<<<< HEAD Finished debug [unoptimized + fuel] target(s) [36.48 KB] in ??? -======= - Finished debug [unoptimized + fuel] target(s) [36.664 KB] in ??? ->>>>>>> a94b693b4 (update tests) -======= - Finished debug [unoptimized + fuel] target(s) [37.08 KB] in ??? ->>>>>>> 2c082a4be (update tests) -======= - Finished debug [unoptimized + fuel] target(s) [36.664 KB] in ??? ->>>>>>> b4cdcf291 (update tests) Running 1 test, filtered 0 tests tested -- dbg -<<<<<<< HEAD -<<<<<<< HEAD -<<<<<<< HEAD test call_main ... ok (???, 117840 gas) -======= - test call_main ... ok (???, 131571 gas) ->>>>>>> a94b693b4 (update tests) -======= - test call_main ... ok (???, 131162 gas) ->>>>>>> 2c082a4be (update tests) -======= - test call_main ... ok (???, 131571 gas) ->>>>>>> b4cdcf291 (update tests) debug output: [src/main.sw:13:13] () = () [src/main.sw:15:13] true = true diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg_release/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg_release/stdout.snap index 756047dde0a..f037cb43833 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg_release/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg_release/stdout.snap @@ -33,22 +33,6 @@ ecal $r0 $r1 $zero $zero ; ecal id fd zero zero ecal $r0 $r2 $zero $zero ; ecal id fd zero zero ecal $r0 $r2 $zero $zero ; ecal id fd zero zero ecal $r0 $r1 $zero $zero ; ecal id fd zero zero -<<<<<<< HEAD -======= -ecal $r0 $r1 $zero $zero ; ecal id fd zero zero -ecal $r0 $r1 $zero $zero ; ecal id fd zero zero -ecal $r0 $r1 $zero $zero ; ecal id fd zero zero -ecal $r0 $r1 $zero $zero ; ecal id fd zero zero -ecal $r0 $r1 $zero $zero ; ecal id fd zero zero -ecal $r0 $r1 $zero $zero ; ecal id fd zero zero -<<<<<<< HEAD -<<<<<<< HEAD ->>>>>>> a94b693b4 (update tests) -======= -ecal $r5 $r6 $r2 $r4 ; ecal id fd buf count ->>>>>>> 2c082a4be (update tests) -======= ->>>>>>> b4cdcf291 (update tests) ecal $r2 $r3 $r0 $r1 ; ecal id fd buf count ecal $r2 $r3 $r0 $r1 ; ecal id fd buf count ecal $r3 $r4 $$locbase $one ; ecal id fd buf count diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/transmute/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/transmute/stdout.snap index 9d2d5a3fa1d..2d88cf933c7 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/transmute/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/transmute/stdout.snap @@ -8,11 +8,7 @@ fn transmute_by_reference_7(mut __ret_value: __ptr u256) -> () { local mut [u8; 32] bytes local __ptr u256 v -<<<<<<< HEAD entry(mut __ret_value: __ptr u256): -======= - entry(__ret_value: __ptr u256): ->>>>>>> a94b693b4 (update tests) v790v1 = get_local __ptr [u8; 32], __array_init_0 mem_clear_val v790v1 v792v1 = get_local __ptr [u8; 32], bytes diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/logging/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/logging/stdout.snap index f239c72828a..85196b254ba 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/logging/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/logging/stdout.snap @@ -389,6 +389,7 @@ script { local mut { ptr, u64, u64 } __aggr_memcpy_07 local mut { u64, u64 } __aggr_memcpy_08 local mut slice __aggr_memcpy_09 + local { __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, u64 } __anon_0 local { ptr, u64, u64 } __anon_00 local { ptr, u64, u64 } __anon_000 local { ptr, u64, u64 } __anon_01 @@ -423,6 +424,7 @@ script { local { { ptr, u64, u64 } } __tmp_arg0 local { { ptr, u64, u64 } } __tmp_arg1 local slice __tmp_block_arg + local { __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, u64 } __tuple_init_0 local { ptr, u64 } __tuple_init_00 local { { ptr, u64, u64 } } buffer local { { ptr, u64, u64 } } buffer_ @@ -451,7 +453,6 @@ script { entry(item: __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }): v494v1 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, item_ mem_copy_val v494v1, item -<<<<<<< HEAD v2807v1 = const bool false, !167 cbr v2807v1, encode_allow_alias_22_is_encode_trivial_23_is_encode_trivial_24_block8(), encode_allow_alias_22_is_encode_trivial_23_is_encode_trivial_24_block9(v2807v1), !169 @@ -501,25 +502,10 @@ script { v579v1 = const u64 0 v2848v1 = get_elem_ptr v2843v1, __ptr u64, v579v1, !190 v2849v1 = load v2848v1, !191 -======= - v1057v1 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, item_, !79 - v3810v1 = get_local __ptr { { ptr, u64, u64 } }, __ret_val1 - v3811v1 = call new_6(v3810v1) - v2843v1 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, self_0, !170 - mem_copy_val v2843v1, v1057v1 - v2845v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_, !171 - mem_copy_val v2845v1, v3810v1 - v2847v1 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, self_0, !173 - v579v1 = const u64 0 - v2848v1 = get_elem_ptr v2847v1, __ptr u64, v579v1, !175 - v2849v1 = load v2848v1, !176 - v2850v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_, !178 ->>>>>>> a94b693b4 (update tests) v3704v1 = get_local __ptr { { ptr, u64, u64 } }, __tmp_arg mem_copy_val v3704v1, v2845v1 v3788v1 = get_local __ptr { { ptr, u64, u64 } }, __ret_val v3789v1 = call abi_encode_5(v2849v1, v3704v1, v3788v1) -<<<<<<< HEAD v2853v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__, !193 mem_copy_val v2853v1, v3788v1 v649v1 = const u64 1 @@ -529,25 +515,10 @@ script { v2863v1 = get_local __ptr { { ptr, u64, u64 } }, __struct_init_0, !200 v595v1 = const u64 0 v2865v1 = get_elem_ptr v2861v1, __ptr { ptr, u64, u64 }, v595v1, !201 -======= - v2853v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__, !180 - mem_copy_val v2853v1, v3788v1 - v2855v1 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, self_0, !182 - v649v1 = const u64 1 - v2856v1 = get_elem_ptr v2855v1, __ptr u64, v649v1, !184 - v2858v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__, !186 - v2861v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_0, !189 - mem_copy_val v2861v1, v2858v1 - v2863v1 = get_local __ptr { { ptr, u64, u64 } }, __struct_init_0, !191 - v2864v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_0, !193 - v595v1 = const u64 0 - v2865v1 = get_elem_ptr v2864v1, __ptr { ptr, u64, u64 }, v595v1, !194 ->>>>>>> a94b693b4 (update tests) v3855v1 = asm(buffer: v2865v1) -> __ptr { ptr, u64, u64 } buffer { } v3932v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_0 mem_copy_val v3932v1, v3855v1 -<<<<<<< HEAD v2868v1 = get_local __ptr { ptr, u64, u64 }, __anon_00, !202 mem_copy_val v2868v1, v3932v1 v601v1 = const u64 0 @@ -583,49 +554,11 @@ script { v641v1 = const u64 2 v2898v1 = get_elem_ptr v2893v1, __ptr u64, v641v1, !223 store v2877v1 to v2898v1, !224 -======= - v2868v1 = get_local __ptr { ptr, u64, u64 }, __anon_00, !195 - mem_copy_val v2868v1, v3932v1 - v601v1 = const u64 0 - v2870v1 = get_elem_ptr v2868v1, __ptr ptr, v601v1, !196 - v2871v1 = load v2870v1, !197 - v604v1 = const u64 1 - v2872v1 = get_elem_ptr v2868v1, __ptr u64, v604v1, !198 - v2873v1 = load v2872v1, !199 - v607v1 = const u64 2 - v2874v1 = get_elem_ptr v2868v1, __ptr u64, v607v1, !200 - v2875v1 = load v2874v1, !201 - v612v1 = const u64 4 - v2877v1 = add v2875v1, v612v1, !202 - v2878v1 = cmp gt v2877v1 v2873v1, !203 - cbr v2878v1, encode_allow_alias_22_abi_encode_37_abi_encode_38_block1(), encode_allow_alias_22_abi_encode_37_abi_encode_38_block0(v2871v1, v2873v1), !204 - - encode_allow_alias_22_abi_encode_37_abi_encode_38_block0(v2780v1: ptr, v2781v1: u64): - v2885v1 = get_local __ptr u64, __anon_1, !205 - mem_copy_val v2885v1, v2856v1 - v626v1 = const u64 4 - v2887v1 = add v2885v1, v626v1, !206 - v2888v1 = cast_ptr v2887v1 to __ptr u8, !207 - v2889v1 = add v2780v1, v2875v1, !208 - v2890v1 = cast_ptr v2889v1 to __ptr u8, !209 - mem_copy_bytes v2890v1, v2888v1, 4, !210 - v2893v1 = get_local __ptr { ptr, u64, u64 }, __anon_2, !211 - v635v1 = const u64 0 - v2894v1 = get_elem_ptr v2893v1, __ptr ptr, v635v1, !212 - store v2780v1 to v2894v1, !213 - v638v1 = const u64 1 - v2896v1 = get_elem_ptr v2893v1, __ptr u64, v638v1, !214 - store v2781v1 to v2896v1, !215 - v641v1 = const u64 2 - v2898v1 = get_elem_ptr v2893v1, __ptr u64, v641v1, !216 - store v2877v1 to v2898v1, !217 ->>>>>>> a94b693b4 (update tests) v3857v1 = asm(buffer: v2893v1) -> __ptr { ptr, u64, u64 } buffer { } v3936v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_00 mem_copy_val v3936v1, v3857v1 v1472v1 = const u64 0 -<<<<<<< HEAD v2901v1 = get_elem_ptr v2863v1, __ptr { ptr, u64, u64 }, v1472v1, !225 mem_copy_val v2901v1, v3936v1 v2905v1 = get_local __ptr { { ptr, u64, u64 } }, buffer___, !227 @@ -637,27 +570,10 @@ script { v2915v1 = get_local __ptr { { ptr, u64, u64 } }, __struct_init_00, !234 v665v1 = const u64 0 v2917v1 = get_elem_ptr v2913v1, __ptr { ptr, u64, u64 }, v665v1, !235 -======= - v2901v1 = get_elem_ptr v2863v1, __ptr { ptr, u64, u64 }, v1472v1, !218 - mem_copy_val v2901v1, v3936v1 - v2905v1 = get_local __ptr { { ptr, u64, u64 } }, buffer___, !220 - mem_copy_val v2905v1, v2863v1 - v2907v1 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, self_0, !222 - v719v1 = const u64 2 - v2908v1 = get_elem_ptr v2907v1, __ptr u64, v719v1, !224 - v2910v1 = get_local __ptr { { ptr, u64, u64 } }, buffer___, !226 - v2913v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_1, !229 - mem_copy_val v2913v1, v2910v1 - v2915v1 = get_local __ptr { { ptr, u64, u64 } }, __struct_init_00, !231 - v2916v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_1, !233 - v665v1 = const u64 0 - v2917v1 = get_elem_ptr v2916v1, __ptr { ptr, u64, u64 }, v665v1, !234 ->>>>>>> a94b693b4 (update tests) v3859v1 = asm(buffer: v2917v1) -> __ptr { ptr, u64, u64 } buffer { } v3941v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_01 mem_copy_val v3941v1, v3859v1 -<<<<<<< HEAD v2920v1 = get_local __ptr { ptr, u64, u64 }, __anon_000, !236 mem_copy_val v2920v1, v3941v1 v671v1 = const u64 0 @@ -703,59 +619,11 @@ script { v711v1 = const u64 2 v2950v1 = get_elem_ptr v2945v1, __ptr u64, v711v1, !261 store v2929v1 to v2950v1, !262 -======= - v2920v1 = get_local __ptr { ptr, u64, u64 }, __anon_000, !235 - mem_copy_val v2920v1, v3941v1 - v671v1 = const u64 0 - v2922v1 = get_elem_ptr v2920v1, __ptr ptr, v671v1, !236 - v2923v1 = load v2922v1, !237 - v674v1 = const u64 1 - v2924v1 = get_elem_ptr v2920v1, __ptr u64, v674v1, !238 - v2925v1 = load v2924v1, !239 - v677v1 = const u64 2 - v2926v1 = get_elem_ptr v2920v1, __ptr u64, v677v1, !240 - v2927v1 = load v2926v1, !241 - v682v1 = const u64 2 - v2929v1 = add v2927v1, v682v1, !242 - v2930v1 = cmp gt v2929v1 v2925v1, !243 - cbr v2930v1, encode_allow_alias_22_abi_encode_37_abi_encode_39_block1(), encode_allow_alias_22_abi_encode_37_abi_encode_39_block0(v2923v1, v2925v1), !244 - - encode_allow_alias_22_abi_encode_37_abi_encode_38_block1(): - v618v1 = const u64 2 - v2881v1 = mul v2873v1, v618v1, !245 - v2882v1 = add v2881v1, v612v1, !246 - v2883v1 = asm(new_cap: v2882v1, old_ptr: v2871v1, len: v2875v1) -> __ptr u8 hp, !247 { - aloc new_cap - mcp hp old_ptr len - } - br encode_allow_alias_22_abi_encode_37_abi_encode_38_block0(v2883v1, v2882v1), !248 - - encode_allow_alias_22_abi_encode_37_abi_encode_39_block0(v2783v1: ptr, v2784v1: u64): - v2937v1 = get_local __ptr u64, __anon_10, !249 - mem_copy_val v2937v1, v2908v1 - v696v1 = const u64 6 - v2939v1 = add v2937v1, v696v1, !250 - v2940v1 = cast_ptr v2939v1 to __ptr u8, !251 - v2941v1 = add v2783v1, v2927v1, !252 - v2942v1 = cast_ptr v2941v1 to __ptr u8, !253 - mem_copy_bytes v2942v1, v2940v1, 2, !254 - v2945v1 = get_local __ptr { ptr, u64, u64 }, __anon_20, !255 - v705v1 = const u64 0 - v2946v1 = get_elem_ptr v2945v1, __ptr ptr, v705v1, !256 - store v2783v1 to v2946v1, !257 - v708v1 = const u64 1 - v2948v1 = get_elem_ptr v2945v1, __ptr u64, v708v1, !258 - store v2784v1 to v2948v1, !259 - v711v1 = const u64 2 - v2950v1 = get_elem_ptr v2945v1, __ptr u64, v711v1, !260 - store v2929v1 to v2950v1, !261 ->>>>>>> a94b693b4 (update tests) v3861v1 = asm(buffer: v2945v1) -> __ptr { ptr, u64, u64 } buffer { } v3945v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_02 mem_copy_val v3945v1, v3861v1 v1475v1 = const u64 0 -<<<<<<< HEAD v2953v1 = get_elem_ptr v2915v1, __ptr { ptr, u64, u64 }, v1475v1, !263 mem_copy_val v2953v1, v3945v1 v2957v1 = get_local __ptr { { ptr, u64, u64 } }, buffer____, !265 @@ -768,28 +636,10 @@ script { v2967v1 = get_local __ptr { { ptr, u64, u64 } }, __struct_init_01, !273 v735v1 = const u64 0 v2969v1 = get_elem_ptr v2965v1, __ptr { ptr, u64, u64 }, v735v1, !274 -======= - v2953v1 = get_elem_ptr v2915v1, __ptr { ptr, u64, u64 }, v1475v1, !262 - mem_copy_val v2953v1, v3945v1 - v2957v1 = get_local __ptr { { ptr, u64, u64 } }, buffer____, !264 - mem_copy_val v2957v1, v2915v1 - v2959v1 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, self_0, !266 - v784v1 = const u64 3 - v2960v1 = get_elem_ptr v2959v1, __ptr u8, v784v1, !268 - v2961v1 = load v2960v1, !269 - v2962v1 = get_local __ptr { { ptr, u64, u64 } }, buffer____, !271 - v2965v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_2, !274 - mem_copy_val v2965v1, v2962v1 - v2967v1 = get_local __ptr { { ptr, u64, u64 } }, __struct_init_01, !276 - v2968v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_2, !278 - v735v1 = const u64 0 - v2969v1 = get_elem_ptr v2968v1, __ptr { ptr, u64, u64 }, v735v1, !279 ->>>>>>> a94b693b4 (update tests) v3863v1 = asm(buffer: v2969v1) -> __ptr { ptr, u64, u64 } buffer { } v3950v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_03 mem_copy_val v3950v1, v3863v1 -<<<<<<< HEAD v2972v1 = get_local __ptr { ptr, u64, u64 }, __anon_01, !275 mem_copy_val v2972v1, v3950v1 v741v1 = const u64 0 @@ -830,54 +680,11 @@ script { v776v1 = const u64 2 v2998v1 = get_elem_ptr v2993v1, __ptr u64, v776v1, !297 store v2981v1 to v2998v1, !298 -======= - v2972v1 = get_local __ptr { ptr, u64, u64 }, __anon_01, !280 - mem_copy_val v2972v1, v3950v1 - v741v1 = const u64 0 - v2974v1 = get_elem_ptr v2972v1, __ptr ptr, v741v1, !281 - v2975v1 = load v2974v1, !282 - v744v1 = const u64 1 - v2976v1 = get_elem_ptr v2972v1, __ptr u64, v744v1, !283 - v2977v1 = load v2976v1, !284 - v747v1 = const u64 2 - v2978v1 = get_elem_ptr v2972v1, __ptr u64, v747v1, !285 - v2979v1 = load v2978v1, !286 - v752v1 = const u64 1 - v2981v1 = add v2979v1, v752v1, !287 - v2982v1 = cmp gt v2981v1 v2977v1, !288 - cbr v2982v1, encode_allow_alias_22_abi_encode_37_abi_encode_40_block1(), encode_allow_alias_22_abi_encode_37_abi_encode_40_block0(v2975v1, v2977v1), !289 - - encode_allow_alias_22_abi_encode_37_abi_encode_39_block1(): - v688v1 = const u64 2 - v2933v1 = mul v2925v1, v688v1, !290 - v2934v1 = add v2933v1, v682v1, !291 - v2935v1 = asm(new_cap: v2934v1, old_ptr: v2923v1, len: v2927v1) -> __ptr u8 hp, !292 { - aloc new_cap - mcp hp old_ptr len - } - br encode_allow_alias_22_abi_encode_37_abi_encode_39_block0(v2935v1, v2934v1), !293 - - encode_allow_alias_22_abi_encode_37_abi_encode_40_block0(v2786v1: ptr, v2787v1: u64): - v2989v1 = add v2786v1, v2979v1, !294 - v2990v1 = cast_ptr v2989v1 to __ptr u8, !295 - store v2961v1 to v2990v1, !296 - v2993v1 = get_local __ptr { ptr, u64, u64 }, __anon_11, !297 - v770v1 = const u64 0 - v2994v1 = get_elem_ptr v2993v1, __ptr ptr, v770v1, !298 - store v2786v1 to v2994v1, !299 - v773v1 = const u64 1 - v2996v1 = get_elem_ptr v2993v1, __ptr u64, v773v1, !300 - store v2787v1 to v2996v1, !301 - v776v1 = const u64 2 - v2998v1 = get_elem_ptr v2993v1, __ptr u64, v776v1, !302 - store v2981v1 to v2998v1, !303 ->>>>>>> a94b693b4 (update tests) v3865v1 = asm(buffer: v2993v1) -> __ptr { ptr, u64, u64 } buffer { } v3953v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_04 mem_copy_val v3953v1, v3865v1 v1478v1 = const u64 0 -<<<<<<< HEAD v3001v1 = get_elem_ptr v2967v1, __ptr { ptr, u64, u64 }, v1478v1, !299 mem_copy_val v3001v1, v3953v1 v3005v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_____, !301 @@ -891,30 +698,10 @@ script { v804v1 = const u64 1 v3018v1 = get_elem_ptr v3012v1, __ptr u64, v804v1, !308 v3019v1 = load v3018v1, !309 -======= - v3001v1 = get_elem_ptr v2967v1, __ptr { ptr, u64, u64 }, v1478v1, !304 - mem_copy_val v3001v1, v3953v1 - v3005v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_____, !306 - mem_copy_val v3005v1, v2967v1 - v3007v1 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, self_0, !308 - v892v1 = const u64 4 - v3008v1 = get_elem_ptr v3007v1, __ptr { { ptr, u64 }, u64 }, v892v1, !310 - v3010v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_____, !312 - v3012v1 = get_local __ptr { { ptr, u64 }, u64 }, self_3, !315 - mem_copy_val v3012v1, v3008v1 - v3014v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_3, !316 - mem_copy_val v3014v1, v3010v1 - v3017v1 = get_local __ptr { { ptr, u64 }, u64 }, self_3, !318 - v804v1 = const u64 1 - v3018v1 = get_elem_ptr v3017v1, __ptr u64, v804v1, !319 - v3019v1 = load v3018v1, !320 - v3020v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_3, !322 ->>>>>>> a94b693b4 (update tests) v3707v1 = get_local __ptr { { ptr, u64, u64 } }, __tmp_arg0 mem_copy_val v3707v1, v3014v1 v3791v1 = get_local __ptr { { ptr, u64, u64 } }, __ret_val0 v3792v1 = call abi_encode_5(v3019v1, v3707v1, v3791v1) -<<<<<<< HEAD v3023v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__0, !311 mem_copy_val v3023v1, v3791v1 v3027v1 = get_local __ptr { ptr, u64 }, __tuple_init_00, !313 @@ -938,42 +725,10 @@ script { v3050v1 = get_local __ptr { { ptr, u64, u64 } }, __struct_init_02, !328 v820v1 = const u64 0 v3052v1 = get_elem_ptr v3046v1, __ptr { ptr, u64, u64 }, v820v1, !329 -======= - v3023v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__0, !324 - mem_copy_val v3023v1, v3791v1 - v3025v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__0, !326 - v3027v1 = get_local __ptr { ptr, u64 }, __tuple_init_00, !328 - v3028v1 = get_local __ptr { { ptr, u64 }, u64 }, self_3, !330 - v876v1 = const u64 0 - v3029v1 = get_elem_ptr v3028v1, __ptr { ptr, u64 }, v876v1, !331 - v878v1 = const u64 0 - v3030v1 = get_elem_ptr v3029v1, __ptr ptr, v878v1, !332 - v3032v1 = get_local __ptr { { ptr, u64 }, u64 }, self_3, !334 - v882v1 = const u64 1 - v3033v1 = get_elem_ptr v3032v1, __ptr u64, v882v1, !335 - v3034v1 = load v3033v1, !336 - v885v1 = const u64 8 - v3039v1 = mul v3034v1, v885v1, !339 - v1481v1 = const u64 0 - v3041v1 = get_elem_ptr v3027v1, __ptr ptr, v1481v1, !340 - mem_copy_val v3041v1, v3030v1 - v1484v1 = const u64 1 - v3043v1 = get_elem_ptr v3027v1, __ptr u64, v1484v1, !341 - store v3039v1 to v3043v1, !342 - v3046v1 = get_local __ptr { { ptr, u64, u64 } }, self_10, !345 - mem_copy_val v3046v1, v3025v1 - v3048v1 = get_local __ptr { ptr, u64 }, r_, !346 - mem_copy_val v3048v1, v3027v1 - v3050v1 = get_local __ptr { { ptr, u64, u64 } }, __struct_init_02, !348 - v3051v1 = get_local __ptr { { ptr, u64, u64 } }, self_10, !350 - v820v1 = const u64 0 - v3052v1 = get_elem_ptr v3051v1, __ptr { ptr, u64, u64 }, v820v1, !351 ->>>>>>> a94b693b4 (update tests) v3867v1 = asm(buffer: v3052v1) -> __ptr { ptr, u64, u64 } buffer { } v3964v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_05 mem_copy_val v3964v1, v3867v1 -<<<<<<< HEAD v3055v1 = get_local __ptr { ptr, u64, u64 }, __anon_02, !330 mem_copy_val v3055v1, v3964v1 v826v1 = const u64 0 @@ -1010,51 +765,11 @@ script { v3079v1 = add v2790v1, v3062v1, !348 v3080v1 = cast_ptr v3079v1 to __ptr u8, !349 v3081v1 = asm(item_ptr: v3077v1, len: v3062v1, addr: v3080v1, data_ptr, item_len, new_len) -> u64 new_len, !350 { -======= - v3055v1 = get_local __ptr { ptr, u64, u64 }, __anon_02, !352 - mem_copy_val v3055v1, v3964v1 - v826v1 = const u64 0 - v3057v1 = get_elem_ptr v3055v1, __ptr ptr, v826v1, !353 - v3058v1 = load v3057v1, !354 - v829v1 = const u64 1 - v3059v1 = get_elem_ptr v3055v1, __ptr u64, v829v1, !355 - v3060v1 = load v3059v1, !356 - v832v1 = const u64 2 - v3061v1 = get_elem_ptr v3055v1, __ptr u64, v832v1, !357 - v3062v1 = load v3061v1, !358 - v3063v1 = get_local __ptr { ptr, u64 }, r_, !360 - v3065v1 = get_local __ptr { ptr, u64 }, __anon_12, !361 - mem_copy_val v3065v1, v3063v1 - v839v1 = const u64 1 - v3067v1 = get_elem_ptr v3065v1, __ptr u64, v839v1, !362 - v3068v1 = load v3067v1, !363 - v3069v1 = add v3062v1, v3068v1, !364 - v3070v1 = cmp gt v3069v1 v3060v1, !365 - cbr v3070v1, encode_allow_alias_22_abi_encode_37_abi_encode_41_append_raw_42_block1(), encode_allow_alias_22_abi_encode_37_abi_encode_41_append_raw_42_block0(v3058v1, v3060v1), !366 - - encode_allow_alias_22_abi_encode_37_abi_encode_40_block1(): - v758v1 = const u64 2 - v2985v1 = mul v2977v1, v758v1, !367 - v2986v1 = add v2985v1, v752v1, !368 - v2987v1 = asm(new_cap: v2986v1, old_ptr: v2975v1, len: v2979v1) -> __ptr u8 hp, !369 { - aloc new_cap - mcp hp old_ptr len - } - br encode_allow_alias_22_abi_encode_37_abi_encode_40_block0(v2987v1, v2986v1), !370 - - encode_allow_alias_22_abi_encode_37_abi_encode_41_append_raw_42_block0(v2790v1: ptr, v2791v1: u64): - v3077v1 = get_local __ptr { ptr, u64 }, __anon_21, !371 - mem_copy_val v3077v1, v3063v1 - v3079v1 = add v2790v1, v3062v1, !372 - v3080v1 = cast_ptr v3079v1 to __ptr u8, !373 - v3081v1 = asm(item_ptr: v3077v1, len: v3062v1, addr: v3080v1, data_ptr, item_len, new_len) -> u64 new_len, !374 { ->>>>>>> a94b693b4 (update tests) lw item_len item_ptr i1 lw data_ptr item_ptr i0 mcp addr data_ptr item_len add new_len len item_len } -<<<<<<< HEAD v3082v1 = get_local __ptr { ptr, u64, u64 }, __anon_3, !351 v859v1 = const u64 0 v3083v1 = get_elem_ptr v3082v1, __ptr ptr, v859v1, !352 @@ -1065,24 +780,11 @@ script { v865v1 = const u64 2 v3087v1 = get_elem_ptr v3082v1, __ptr u64, v865v1, !356 store v3081v1 to v3087v1, !357 -======= - v3082v1 = get_local __ptr { ptr, u64, u64 }, __anon_3, !375 - v859v1 = const u64 0 - v3083v1 = get_elem_ptr v3082v1, __ptr ptr, v859v1, !376 - store v2790v1 to v3083v1, !377 - v862v1 = const u64 1 - v3085v1 = get_elem_ptr v3082v1, __ptr u64, v862v1, !378 - store v2791v1 to v3085v1, !379 - v865v1 = const u64 2 - v3087v1 = get_elem_ptr v3082v1, __ptr u64, v865v1, !380 - store v3081v1 to v3087v1, !381 ->>>>>>> a94b693b4 (update tests) v3869v1 = asm(buffer: v3082v1) -> __ptr { ptr, u64, u64 } buffer { } v3969v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_06 mem_copy_val v3969v1, v3869v1 v1487v1 = const u64 0 -<<<<<<< HEAD v3090v1 = get_elem_ptr v3050v1, __ptr { ptr, u64, u64 }, v1487v1, !358 mem_copy_val v3090v1, v3969v1 v3095v1 = get_local __ptr { { ptr, u64, u64 } }, buffer______, !360 @@ -1096,29 +798,10 @@ script { v3106v1 = get_local __ptr { { ptr, u64, u64 } }, __struct_init_03, !368 v908v1 = const u64 0 v3108v1 = get_elem_ptr v3104v1, __ptr { ptr, u64, u64 }, v908v1, !369 -======= - v3090v1 = get_elem_ptr v3050v1, __ptr { ptr, u64, u64 }, v1487v1, !382 - mem_copy_val v3090v1, v3969v1 - v3095v1 = get_local __ptr { { ptr, u64, u64 } }, buffer______, !384 - mem_copy_val v3095v1, v3050v1 - v3097v1 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, self_0, !386 - v964v1 = const u64 5 - v3098v1 = get_elem_ptr v3097v1, __ptr slice, v964v1, !388 - v3100v1 = get_local __ptr { { ptr, u64, u64 } }, buffer______, !390 - v3102v1 = get_local __ptr slice, self_4, !393 - mem_copy_val v3102v1, v3098v1 - v3104v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_4, !394 - mem_copy_val v3104v1, v3100v1 - v3106v1 = get_local __ptr { { ptr, u64, u64 } }, __struct_init_03, !396 - v3107v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_4, !398 - v908v1 = const u64 0 - v3108v1 = get_elem_ptr v3107v1, __ptr { ptr, u64, u64 }, v908v1, !399 ->>>>>>> a94b693b4 (update tests) v3871v1 = asm(buffer: v3108v1) -> __ptr { ptr, u64, u64 } buffer { } v3975v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_07 mem_copy_val v3975v1, v3871v1 -<<<<<<< HEAD v3111v1 = get_local __ptr { ptr, u64, u64 }, __anon_03, !370 mem_copy_val v3111v1, v3975v1 v914v1 = const u64 0 @@ -1130,27 +813,12 @@ script { v920v1 = const u64 2 v3117v1 = get_elem_ptr v3111v1, __ptr u64, v920v1, !375 v3118v1 = load v3117v1, !376 -======= - v3111v1 = get_local __ptr { ptr, u64, u64 }, __anon_03, !400 - mem_copy_val v3111v1, v3975v1 - v914v1 = const u64 0 - v3113v1 = get_elem_ptr v3111v1, __ptr ptr, v914v1, !401 - v3114v1 = load v3113v1, !402 - v917v1 = const u64 1 - v3115v1 = get_elem_ptr v3111v1, __ptr u64, v917v1, !403 - v3116v1 = load v3115v1, !404 - v920v1 = const u64 2 - v3117v1 = get_elem_ptr v3111v1, __ptr u64, v920v1, !405 - v3118v1 = load v3117v1, !406 - v3119v1 = get_local __ptr slice, self_4, !408 ->>>>>>> a94b693b4 (update tests) v3981v1 = get_local __ptr slice, __aggr_memcpy_09 mem_copy_val v3981v1, v3102v1 v3873v1 = asm(item: v3102v1) -> __ptr { u64, u64 } item { } v3978v1 = get_local __ptr { u64, u64 }, __aggr_memcpy_08 mem_copy_val v3978v1, v3873v1 -<<<<<<< HEAD v3122v1 = get_local __ptr { u64, u64 }, __anon_13, !377 mem_copy_val v3122v1, v3978v1 v928v1 = const u64 1 @@ -1178,35 +846,6 @@ script { v3137v1 = add v2794v1, v3118v1, !389 v3138v1 = cast_ptr v3137v1 to __ptr u8, !390 v3139v1 = asm(item_ptr: v3135v1, len: v3118v1, addr: v3138v1, data_ptr, item_len, new_len) -> u64 new_len, !391 { -======= - v3122v1 = get_local __ptr { u64, u64 }, __anon_13, !409 - mem_copy_val v3122v1, v3978v1 - v928v1 = const u64 1 - v3124v1 = get_elem_ptr v3122v1, __ptr u64, v928v1, !410 - v3125v1 = load v3124v1, !411 - v931v1 = const u64 8 - v3126v1 = add v3125v1, v931v1, !412 - v3127v1 = add v3118v1, v3126v1, !413 - v3128v1 = cmp gt v3127v1 v3116v1, !414 - cbr v3128v1, encode_allow_alias_22_abi_encode_37_abi_encode_43_block1(), encode_allow_alias_22_abi_encode_37_abi_encode_43_block0(v3114v1, v3116v1), !415 - - encode_allow_alias_22_abi_encode_37_abi_encode_41_append_raw_42_block1(): - v847v1 = const u64 2 - v3073v1 = mul v3060v1, v847v1, !416 - v3074v1 = add v3073v1, v3068v1, !417 - v3075v1 = asm(new_cap: v3074v1, old_ptr: v3058v1, len: v3062v1) -> __ptr u8 hp, !418 { - aloc new_cap - mcp hp old_ptr len - } - br encode_allow_alias_22_abi_encode_37_abi_encode_41_append_raw_42_block0(v3075v1, v3074v1), !419 - - encode_allow_alias_22_abi_encode_37_abi_encode_43_block0(v2794v1: ptr, v2795v1: u64): - v3135v1 = get_local __ptr slice, __anon_22, !420 - mem_copy_val v3135v1, v3981v1 - v3137v1 = add v2794v1, v3118v1, !421 - v3138v1 = cast_ptr v3137v1 to __ptr u8, !422 - v3139v1 = asm(item_ptr: v3135v1, len: v3118v1, addr: v3138v1, data_ptr, item_len, new_len) -> u64 new_len, !423 { ->>>>>>> a94b693b4 (update tests) lw item_len item_ptr i1 sw addr item_len i0 addi addr addr i8 @@ -1215,7 +854,6 @@ script { addi new_len len i8 add new_len new_len item_len } -<<<<<<< HEAD v3140v1 = get_local __ptr { ptr, u64, u64 }, __anon_30, !392 v950v1 = const u64 0 v3141v1 = get_elem_ptr v3140v1, __ptr ptr, v950v1, !393 @@ -1226,24 +864,11 @@ script { v956v1 = const u64 2 v3145v1 = get_elem_ptr v3140v1, __ptr u64, v956v1, !397 store v3139v1 to v3145v1, !398 -======= - v3140v1 = get_local __ptr { ptr, u64, u64 }, __anon_30, !424 - v950v1 = const u64 0 - v3141v1 = get_elem_ptr v3140v1, __ptr ptr, v950v1, !425 - store v2794v1 to v3141v1, !426 - v953v1 = const u64 1 - v3143v1 = get_elem_ptr v3140v1, __ptr u64, v953v1, !427 - store v2795v1 to v3143v1, !428 - v956v1 = const u64 2 - v3145v1 = get_elem_ptr v3140v1, __ptr u64, v956v1, !429 - store v3139v1 to v3145v1, !430 ->>>>>>> a94b693b4 (update tests) v3875v1 = asm(buffer: v3140v1) -> __ptr { ptr, u64, u64 } buffer { } v3984v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_010 mem_copy_val v3984v1, v3875v1 v1490v1 = const u64 0 -<<<<<<< HEAD v3148v1 = get_elem_ptr v3106v1, __ptr { ptr, u64, u64 }, v1490v1, !399 mem_copy_val v3148v1, v3984v1 v3152v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_______, !401 @@ -1257,29 +882,10 @@ script { v3163v1 = get_local __ptr { { ptr, u64, u64 } }, __struct_init_04, !409 v980v1 = const u64 0 v3165v1 = get_elem_ptr v3161v1, __ptr { ptr, u64, u64 }, v980v1, !410 -======= - v3148v1 = get_elem_ptr v3106v1, __ptr { ptr, u64, u64 }, v1490v1, !431 - mem_copy_val v3148v1, v3984v1 - v3152v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_______, !433 - mem_copy_val v3152v1, v3106v1 - v3154v1 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, self_0, !435 - v1031v1 = const u64 6 - v3155v1 = get_elem_ptr v3154v1, __ptr u256, v1031v1, !437 - v3157v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_______, !439 - v3159v1 = get_local __ptr u256, self_5, !442 - mem_copy_val v3159v1, v3155v1 - v3161v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_5, !443 - mem_copy_val v3161v1, v3157v1 - v3163v1 = get_local __ptr { { ptr, u64, u64 } }, __struct_init_04, !445 - v3164v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_5, !447 - v980v1 = const u64 0 - v3165v1 = get_elem_ptr v3164v1, __ptr { ptr, u64, u64 }, v980v1, !448 ->>>>>>> a94b693b4 (update tests) v3877v1 = asm(buffer: v3165v1) -> __ptr { ptr, u64, u64 } buffer { } v3990v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_011 mem_copy_val v3990v1, v3877v1 -<<<<<<< HEAD v3168v1 = get_local __ptr { ptr, u64, u64 }, __anon_04, !411 mem_copy_val v3168v1, v3990v1 v986v1 = const u64 0 @@ -1322,80 +928,23 @@ script { v1023v1 = const u64 2 v3197v1 = get_elem_ptr v3192v1, __ptr u64, v1023v1, !434 store v3178v1 to v3197v1, !435 -======= - v3168v1 = get_local __ptr { ptr, u64, u64 }, __anon_04, !449 - mem_copy_val v3168v1, v3990v1 - v986v1 = const u64 0 - v3170v1 = get_elem_ptr v3168v1, __ptr ptr, v986v1, !450 - v3171v1 = load v3170v1, !451 - v989v1 = const u64 1 - v3172v1 = get_elem_ptr v3168v1, __ptr u64, v989v1, !452 - v3173v1 = load v3172v1, !453 - v992v1 = const u64 2 - v3174v1 = get_elem_ptr v3168v1, __ptr u64, v992v1, !454 - v3175v1 = load v3174v1, !455 - v3176v1 = get_local __ptr u256, self_5, !457 - v997v1 = const u64 32 - v3178v1 = add v3175v1, v997v1, !458 - v3179v1 = cmp gt v3178v1 v3173v1, !459 - cbr v3179v1, encode_allow_alias_22_abi_encode_37_abi_encode_44_block1(), encode_allow_alias_22_abi_encode_37_abi_encode_44_block0(v3171v1, v3173v1), !460 - - encode_allow_alias_22_abi_encode_37_abi_encode_43_block1(): - v938v1 = const u64 2 - v3131v1 = mul v3116v1, v938v1, !461 - v3132v1 = add v3131v1, v3126v1, !462 - v3133v1 = asm(new_cap: v3132v1, old_ptr: v3114v1, len: v3118v1) -> __ptr u8 hp, !463 { - aloc new_cap - mcp hp old_ptr len - } - br encode_allow_alias_22_abi_encode_37_abi_encode_43_block0(v3133v1, v3132v1), !464 - - encode_allow_alias_22_abi_encode_37_abi_encode_44_block0(v2797v1: ptr, v2798v1: u64): - v3186v1 = get_local __ptr u256, __anon_14, !465 - mem_copy_val v3186v1, v3176v1 - v3188v1 = add v2797v1, v3175v1, !466 - v3189v1 = cast_ptr v3188v1 to __ptr u8, !467 - mem_copy_bytes v3189v1, v3186v1, 32, !468 - v3192v1 = get_local __ptr { ptr, u64, u64 }, __anon_23, !469 - v1017v1 = const u64 0 - v3193v1 = get_elem_ptr v3192v1, __ptr ptr, v1017v1, !470 - store v2797v1 to v3193v1, !471 - v1020v1 = const u64 1 - v3195v1 = get_elem_ptr v3192v1, __ptr u64, v1020v1, !472 - store v2798v1 to v3195v1, !473 - v1023v1 = const u64 2 - v3197v1 = get_elem_ptr v3192v1, __ptr u64, v1023v1, !474 - store v3178v1 to v3197v1, !475 ->>>>>>> a94b693b4 (update tests) v3879v1 = asm(buffer: v3192v1) -> __ptr { ptr, u64, u64 } buffer { } v3994v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_012 mem_copy_val v3994v1, v3879v1 v1493v1 = const u64 0 -<<<<<<< HEAD v3200v1 = get_elem_ptr v3163v1, __ptr { ptr, u64, u64 }, v1493v1, !436 mem_copy_val v3200v1, v3994v1 v3204v1 = get_local __ptr { { ptr, u64, u64 } }, buffer________, !438 mem_copy_val v3204v1, v3163v1 v3209v1 = get_local __ptr { { ptr, u64, u64 } }, buffer, !440 mem_copy_val v3209v1, v3204v1 -======= - v3200v1 = get_elem_ptr v3163v1, __ptr { ptr, u64, u64 }, v1493v1, !476 - mem_copy_val v3200v1, v3994v1 - v3204v1 = get_local __ptr { { ptr, u64, u64 } }, buffer________, !478 - mem_copy_val v3204v1, v3163v1 - v3206v1 = get_local __ptr { { ptr, u64, u64 } }, buffer________, !480 - v3209v1 = get_local __ptr { { ptr, u64, u64 } }, buffer, !482 - mem_copy_val v3209v1, v3206v1 - v3211v1 = get_local __ptr { { ptr, u64, u64 } }, buffer, !484 ->>>>>>> a94b693b4 (update tests) v3724v1 = get_local __ptr { { ptr, u64, u64 } }, __tmp_arg1 mem_copy_val v3724v1, v3209v1 v3823v1 = get_local __ptr slice, __ret_val2 v3824v1 = call as_raw_slice_7(v3724v1, v3823v1) v3742v1 = get_local __ptr slice, __tmp_block_arg mem_copy_val v3742v1, v3823v1 -<<<<<<< HEAD br encode_allow_alias_22_block2(v3742v1), !74 encode_allow_alias_22_abi_encode_37_abi_encode_44_block1(): @@ -1409,31 +958,15 @@ script { br encode_allow_alias_22_abi_encode_37_abi_encode_44_block0(v3184v1, v3183v1), !444 encode_allow_alias_22_block2(mut v3738v1: __ptr slice): -======= ->>>>>>> a94b693b4 (update tests) v3852v1 = get_local __ptr slice, __log_arg - mem_copy_val v3852v1, v3742v1 + mem_copy_val v3852v1, v3738v1 v1059v1 = const u64 4579537983717831593 log __ptr slice v3852v1, v1059v1 v1063v1 = const unit () ret () v1063v1 - - encode_allow_alias_22_abi_encode_37_abi_encode_44_block1(): - v1003v1 = const u64 2 - v3182v1 = mul v3173v1, v1003v1, !485 - v3183v1 = add v3182v1, v997v1, !486 - v3184v1 = asm(new_cap: v3183v1, old_ptr: v3171v1, len: v3175v1) -> __ptr u8 hp, !487 { - aloc new_cap - mcp hp old_ptr len - } - br encode_allow_alias_22_abi_encode_37_abi_encode_44_block0(v3184v1, v3183v1), !488 } -<<<<<<< HEAD fn local_log_46(mut item: __ptr { u64 }) -> (), !445 { -======= - fn local_log_46(item: __ptr { u64 }) -> (), !489 { ->>>>>>> a94b693b4 (update tests) local { __ptr { u64 }, u64 } __anon_0 local slice __log_arg local { u64 } item_ @@ -1441,7 +974,6 @@ script { entry(item: __ptr { u64 }): v1093v1 = get_local __ptr { u64 }, item_ mem_copy_val v1093v1, item -<<<<<<< HEAD v3303v1 = get_local __ptr { __ptr { u64 }, u64 }, __anon_0, !446 v1496v1 = const u64 0 v3306v1 = get_elem_ptr v3303v1, __ptr __ptr { u64 }, v1496v1, !447 @@ -1451,19 +983,6 @@ script { v1109v1 = const u64 8 store v1109v1 to v3308v1, !450 v3313v1 = cast_ptr v3303v1 to __ptr slice, !74 -======= - v1156v1 = get_local __ptr { u64 }, item_, !79 - v3303v1 = get_local __ptr { __ptr { u64 }, u64 }, __anon_0, !490 - v1496v1 = const u64 0 - v3306v1 = get_elem_ptr v3303v1, __ptr __ptr { u64 }, v1496v1, !491 - store v1156v1 to v3306v1, !492 - v1499v1 = const u64 1 - v3308v1 = get_elem_ptr v3303v1, __ptr u64, v1499v1, !493 - v1109v1 = const u64 8 - store v1109v1 to v3308v1, !494 - v3311v1 = get_local __ptr { __ptr { u64 }, u64 }, __anon_0, !79 - v3313v1 = cast_ptr v3311v1 to __ptr slice, !79 ->>>>>>> a94b693b4 (update tests) v3881v1 = get_local __ptr slice, __log_arg mem_copy_val v3881v1, v3313v1 v1158v1 = const u64 16566583104751091389 @@ -1472,11 +991,7 @@ script { ret () v1162v1 } -<<<<<<< HEAD fn local_log_51(mut item: __ptr { u64, ( { u64 } | () ) }) -> (), !451 { -======= - fn local_log_51(item: __ptr { u64, ( { u64 } | () ) }) -> (), !495 { ->>>>>>> a94b693b4 (update tests) local slice __log_arg local { u64, ( { u64 } | () ) } __matched_value_1 local { { ptr, u64, u64 } } __tmp_block_arg @@ -1489,7 +1004,6 @@ script { v3813v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_ v3814v1 = call new_6(v3813v1) v1219v1 = const u64 0 -<<<<<<< HEAD v3551v1 = get_elem_ptr v1170v1, __ptr u64, v1219v1, !453 v4065v1 = get_elem_ptr item, __ptr u64, v1219v1 v3552v1 = load v4065v1, !454 @@ -1526,71 +1040,17 @@ script { encode_allow_alias_52_abi_encode_57_block3(): v1256v1 = const u64 14757395258967588866, !470 revert v1256v1, !471 -======= - v4065v1 = get_elem_ptr item, __ptr u64, v1219v1 - v3552v1 = load v4065v1, !496 - v1222v1 = const u64 0, !497 - v3557v1 = cmp eq v3552v1 v1222v1, !500 - cbr v3557v1, encode_allow_alias_52_abi_encode_57_block0(), encode_allow_alias_52_abi_encode_57_block1(), !501 - - encode_allow_alias_52_abi_encode_57_block0(): - v3576v1 = get_local __ptr { u64, ( { u64 } | () ) }, __matched_value_1, !502 - v1225v1 = const u64 1 - v1226v1 = const u64 0 - v3577v1 = get_elem_ptr v3576v1, __ptr { u64 }, v1225v1, v1226v1, !503 - v3581v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_, !505 - v3797v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__ - v1231v1 = const u64 0, !506 - v3798v1 = call abi_encode_5(v1231v1, v3581v1, v3797v1) - v3755v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__ - v3836v1 = get_local __ptr { { ptr, u64, u64 } }, __tmp_block_arg - v1130v1 = const u64 0 - v3837v3 = get_elem_ptr v3577v1, __ptr u64, v1130v1, !507 - v4062v1 = load v3837v3 - v4063v1 = call abi_encode_5(v4062v1, v3755v1, v3836v1) - v3768v1 = get_local __ptr { { ptr, u64, u64 } }, __tmp_block_arg - br encode_allow_alias_52_abi_encode_57_block5(v3768v1), !508 - - encode_allow_alias_52_abi_encode_57_block1(): - v3560v1 = get_local __ptr { u64, ( { u64 } | () ) }, __matched_value_1, !509 - v1247v1 = const u64 0 - v3561v1 = get_elem_ptr v3560v1, __ptr u64, v1247v1, !510 - v3562v1 = load v3561v1, !511 - v1250v1 = const u64 1, !497 - v3567v1 = cmp eq v3562v1 v1250v1, !514 - cbr v3567v1, encode_allow_alias_52_abi_encode_57_block2(), encode_allow_alias_52_abi_encode_57_block3(), !515 - - encode_allow_alias_52_abi_encode_57_block2(): - v3571v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_, !517 - v3800v1 = get_local __ptr { { ptr, u64, u64 } }, __tmp_block_arg - v1252v1 = const u64 1, !518 - v3801v1 = call abi_encode_5(v1252v1, v3571v1, v3800v1) - v3770v1 = get_local __ptr { { ptr, u64, u64 } }, __tmp_block_arg - br encode_allow_alias_52_abi_encode_57_block5(v3770v1), !519 - - encode_allow_alias_52_abi_encode_57_block3(): - v1256v1 = const u64 14757395258967588866, !520 - revert v1256v1, !521 ->>>>>>> a94b693b4 (update tests) encode_allow_alias_52_abi_encode_57_block5(mut v3766v1: __ptr { { ptr, u64, u64 } }): v3826v1 = get_local __ptr slice, __log_arg v3827v1 = call as_raw_slice_7(v3766v1, v3826v1) -<<<<<<< HEAD -======= - v3884v1 = get_local __ptr slice, __log_arg ->>>>>>> a94b693b4 (update tests) v1287v1 = const u64 5087777005172090899 log __ptr slice v3826v1, v1287v1 v1291v1 = const unit () ret () v1291v1 } -<<<<<<< HEAD fn local_log_58(mut item: __ptr { }) -> (), !472 { -======= - fn local_log_58(item: __ptr { }) -> (), !522 { ->>>>>>> a94b693b4 (update tests) local slice __log_arg local { { ptr, u64, u64 } } buffer local { { ptr, u64, u64 } } buffer_ @@ -1599,14 +1059,8 @@ script { v3816v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_ v3817v1 = call new_6(v3816v1) v3803v1 = get_local __ptr { { ptr, u64, u64 } }, buffer -<<<<<<< HEAD v1346v1 = const u64 77, !473 v3804v1 = call abi_encode_5(v1346v1, v3816v1, v3803v1) -======= - v1346v1 = const u64 77, !523 - v3804v1 = call abi_encode_5(v1346v1, v3719v1, v3803v1) - v3730v1 = get_local __ptr { { ptr, u64, u64 } }, buffer ->>>>>>> a94b693b4 (update tests) v3829v1 = get_local __ptr slice, __log_arg v3830v1 = call as_raw_slice_7(v3803v1, v3829v1) v1368v1 = const u64 5555909392781521367 @@ -1706,7 +1160,6 @@ script { !87 = span !10 200 300 !88 = fn_name_span !10 207 210 !89 = (!87 !88) -<<<<<<< HEAD !90 = span !10 231 294 !91 = span !10 1106 1198 !92 = fn_name_span !10 1109 1121 @@ -2091,442 +1544,6 @@ script { !471 = (!74 !185 !186 !470) !472 = (!70 !71 !72) !473 = span !13 433 438 -======= -!90 = span !11 4938 5021 -!91 = span !11 4990 4996 -!92 = span !11 127 154 -!93 = span !11 200 300 -!94 = fn_name_span !11 207 210 -!95 = (!93 !94) -!96 = span !11 231 294 -!97 = span !11 692 784 -!98 = fn_name_span !11 695 707 -!99 = (!97 !98) -!100 = span !11 766 770 -!101 = span !24 5773 5777 -!102 = span !24 5779 5784 -!103 = span !24 5753 6218 -!104 = fn_name_span !24 5760 5764 -!105 = (!103 !104) -!106 = span !24 3556 3564 -!107 = span !24 3536 3550 -!108 = span !24 388 396 -!109 = span !24 5865 5889 -!110 = fn_call_path_span !24 5874 5876 -!111 = (!109 !110) -!112 = span !24 5904 5919 -!113 = fn_call_path_span !24 5913 5917 -!114 = (!112 !113) -!115 = span !24 3003 3004 -!116 = span !24 2991 3004 -!117 = fn_call_path_span !24 3000 3002 -!118 = (!112 !113 !116 !117) -!119 = span !24 3007 3008 -!120 = (!112 !113 !116) -!121 = span !24 3018 3019 -!122 = span !24 3018 3030 -!123 = fn_call_path_span !24 3020 3021 -!124 = (!112 !113 !122 !123) -!125 = span !24 370 382 -!126 = (!112 !113 !125) -!127 = span !24 3054 3095 -!128 = fn_call_path_span !24 3054 3061 -!129 = span !34 2578 2595 -!130 = fn_call_path_span !34 2588 2589 -!131 = (!112 !113 !127 !128 !129 !130) -!132 = (!112 !113 !127 !128 !129) -!133 = span !34 2620 2641 -!134 = fn_call_path_span !34 2620 2625 -!135 = (!112 !113 !127 !128 !133 !134 !35) -!136 = span !34 2662 2663 -!137 = span !34 2654 2663 -!138 = fn_call_path_span !34 2660 2661 -!139 = (!112 !113 !127 !128 !137 !138) -!140 = (!112 !113 !127 !128 !137) -!141 = span !34 2678 2710 -!142 = fn_call_path_span !34 2682 2689 -!143 = "test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-vec/src/raw_ptr.sw" -!144 = span !143 3413 3437 -!145 = fn_call_path_span !143 3419 3420 -!146 = (!112 !113 !127 !128 !141 !142 !144 !145) -!147 = span !143 3447 3522 -!148 = (!112 !113 !127 !128 !141 !142 !147) -!149 = span !143 3496 3511 -!150 = (!112 !113 !127 !128) -!151 = span !24 3043 3095 -!152 = (!112 !113 !151) -!153 = span !24 3105 3123 -!154 = (!112 !113 !153) -!155 = span !24 6053 6084 -!156 = fn_call_path_span !24 6066 6069 -!157 = (!155 !156) -!158 = span !24 6137 6158 -!159 = fn_call_path_span !24 6141 6146 -!160 = span !143 4229 4292 -!161 = (!158 !159 !160) -!162 = span !143 4268 4281 -!163 = span !24 6210 6211 -!164 = span !24 6198 6211 -!165 = fn_call_path_span !24 6207 6209 -!166 = (!164 !165) -!167 = (!75 !76 !77) -!168 = span !11 56254 56287 -!169 = fn_call_path_span !11 56262 56272 -!170 = (!79 !168 !169) -!171 = (!79 !168 !169) -!172 = span !0 556 560 -!173 = (!79 !168 !169 !172) -!174 = span !14 116 122 -!175 = (!79 !168 !169 !174) -!176 = (!79 !168 !169) -!177 = span !0 574 580 -!178 = (!79 !168 !169 !177) -!179 = span !0 543 582 -!180 = (!79 !168 !169 !179) -!181 = span !0 596 600 -!182 = (!79 !168 !169 !181) -!183 = span !14 128 134 -!184 = (!79 !168 !169 !183) -!185 = span !0 614 620 -!186 = (!79 !168 !169 !185) -!187 = span !0 596 621 -!188 = fn_call_path_span !0 603 613 -!189 = (!79 !168 !169 !187 !188) -!190 = span !11 5173 5256 -!191 = (!79 !168 !169 !187 !188 !190) -!192 = span !11 5225 5231 -!193 = (!79 !168 !169 !187 !188 !192) -!194 = (!79 !168 !169 !187 !188 !92) -!195 = (!79 !168 !169 !187 !188) -!196 = (!79 !168 !169 !187 !188) -!197 = (!79 !168 !169 !187 !188) -!198 = (!79 !168 !169 !187 !188) -!199 = (!79 !168 !169 !187 !188) -!200 = (!79 !168 !169 !187 !188) -!201 = (!79 !168 !169 !187 !188) -!202 = (!79 !168 !169 !187 !188) -!203 = (!79 !168 !169 !187 !188) -!204 = (!79 !168 !169 !187 !188) -!205 = (!79 !168 !169 !187 !188) -!206 = (!79 !168 !169 !187 !188) -!207 = (!79 !168 !169 !187 !188) -!208 = (!79 !168 !169 !187 !188) -!209 = (!79 !168 !169 !187 !188) -!210 = (!79 !168 !169 !187 !188) -!211 = (!79 !168 !169 !187 !188) -!212 = (!79 !168 !169 !187 !188) -!213 = (!79 !168 !169 !187 !188) -!214 = (!79 !168 !169 !187 !188) -!215 = (!79 !168 !169 !187 !188) -!216 = (!79 !168 !169 !187 !188) -!217 = (!79 !168 !169 !187 !188) -!218 = (!79 !168 !169 !187 !188 !190) -!219 = span !0 583 622 -!220 = (!79 !168 !169 !219) -!221 = span !0 636 640 -!222 = (!79 !168 !169 !221) -!223 = span !14 140 146 -!224 = (!79 !168 !169 !223) -!225 = span !0 654 660 -!226 = (!79 !168 !169 !225) -!227 = span !0 636 661 -!228 = fn_call_path_span !0 643 653 -!229 = (!79 !168 !169 !227 !228) -!230 = span !11 5408 5491 -!231 = (!79 !168 !169 !227 !228 !230) -!232 = span !11 5460 5466 -!233 = (!79 !168 !169 !227 !228 !232) -!234 = (!79 !168 !169 !227 !228 !92) -!235 = (!79 !168 !169 !227 !228) -!236 = (!79 !168 !169 !227 !228) -!237 = (!79 !168 !169 !227 !228) -!238 = (!79 !168 !169 !227 !228) -!239 = (!79 !168 !169 !227 !228) -!240 = (!79 !168 !169 !227 !228) -!241 = (!79 !168 !169 !227 !228) -!242 = (!79 !168 !169 !227 !228) -!243 = (!79 !168 !169 !227 !228) -!244 = (!79 !168 !169 !227 !228) -!245 = (!79 !168 !169 !187 !188) -!246 = (!79 !168 !169 !187 !188) -!247 = (!79 !168 !169 !187 !188) -!248 = (!79 !168 !169 !187 !188) -!249 = (!79 !168 !169 !227 !228) -!250 = (!79 !168 !169 !227 !228) -!251 = (!79 !168 !169 !227 !228) -!252 = (!79 !168 !169 !227 !228) -!253 = (!79 !168 !169 !227 !228) -!254 = (!79 !168 !169 !227 !228) -!255 = (!79 !168 !169 !227 !228) -!256 = (!79 !168 !169 !227 !228) -!257 = (!79 !168 !169 !227 !228) -!258 = (!79 !168 !169 !227 !228) -!259 = (!79 !168 !169 !227 !228) -!260 = (!79 !168 !169 !227 !228) -!261 = (!79 !168 !169 !227 !228) -!262 = (!79 !168 !169 !227 !228 !230) -!263 = span !0 623 662 -!264 = (!79 !168 !169 !263) -!265 = span !0 676 680 -!266 = (!79 !168 !169 !265) -!267 = span !14 152 157 -!268 = (!79 !168 !169 !267) -!269 = (!79 !168 !169) -!270 = span !0 694 700 -!271 = (!79 !168 !169 !270) -!272 = span !0 676 701 -!273 = fn_call_path_span !0 683 693 -!274 = (!79 !168 !169 !272 !273) -!275 = span !11 5641 5724 -!276 = (!79 !168 !169 !272 !273 !275) -!277 = span !11 5693 5699 -!278 = (!79 !168 !169 !272 !273 !277) -!279 = (!79 !168 !169 !272 !273 !92) -!280 = (!79 !168 !169 !272 !273) -!281 = (!79 !168 !169 !272 !273) -!282 = (!79 !168 !169 !272 !273) -!283 = (!79 !168 !169 !272 !273) -!284 = (!79 !168 !169 !272 !273) -!285 = (!79 !168 !169 !272 !273) -!286 = (!79 !168 !169 !272 !273) -!287 = (!79 !168 !169 !272 !273) -!288 = (!79 !168 !169 !272 !273) -!289 = (!79 !168 !169 !272 !273) -!290 = (!79 !168 !169 !227 !228) -!291 = (!79 !168 !169 !227 !228) -!292 = (!79 !168 !169 !227 !228) -!293 = (!79 !168 !169 !227 !228) -!294 = (!79 !168 !169 !272 !273) -!295 = (!79 !168 !169 !272 !273) -!296 = (!79 !168 !169 !272 !273) -!297 = (!79 !168 !169 !272 !273) -!298 = (!79 !168 !169 !272 !273) -!299 = (!79 !168 !169 !272 !273) -!300 = (!79 !168 !169 !272 !273) -!301 = (!79 !168 !169 !272 !273) -!302 = (!79 !168 !169 !272 !273) -!303 = (!79 !168 !169 !272 !273) -!304 = (!79 !168 !169 !272 !273 !275) -!305 = span !0 663 702 -!306 = (!79 !168 !169 !305) -!307 = span !0 716 720 -!308 = (!79 !168 !169 !307) -!309 = span !14 163 174 -!310 = (!79 !168 !169 !309) -!311 = span !0 734 740 -!312 = (!79 !168 !169 !311) -!313 = span !0 716 741 -!314 = fn_call_path_span !0 723 733 -!315 = (!79 !168 !169 !313 !314) -!316 = (!79 !168 !169 !313 !314) -!317 = span !24 21709 21713 -!318 = (!79 !168 !169 !313 !314 !317) -!319 = (!79 !168 !169 !313 !314 !106) -!320 = (!79 !168 !169 !313 !314) -!321 = span !24 21729 21735 -!322 = (!79 !168 !169 !313 !314 !321) -!323 = span !24 21696 21737 -!324 = (!79 !168 !169 !313 !314 !323) -!325 = span !24 21750 21756 -!326 = (!79 !168 !169 !313 !314 !325) -!327 = span !24 21768 21811 -!328 = (!79 !168 !169 !313 !314 !327) -!329 = span !24 21769 21773 -!330 = (!79 !168 !169 !313 !314 !329) -!331 = (!79 !168 !169 !313 !314 !107) -!332 = (!79 !168 !169 !313 !314 !125) -!333 = span !24 21783 21787 -!334 = (!79 !168 !169 !313 !314 !333) -!335 = (!79 !168 !169 !313 !314 !106) -!336 = (!79 !168 !169 !313 !314) -!337 = span !24 21783 21810 -!338 = fn_call_path_span !24 21792 21793 -!339 = (!79 !168 !169 !313 !314 !337 !338) -!340 = (!79 !168 !169 !313 !314 !327) -!341 = (!79 !168 !169 !313 !314 !327) -!342 = (!79 !168 !169 !313 !314 !327) -!343 = span !24 21750 21812 -!344 = fn_call_path_span !24 21757 21767 -!345 = (!79 !168 !169 !313 !314 !343 !344) -!346 = (!79 !168 !169 !313 !314 !343 !344) -!347 = span !11 571 649 -!348 = (!79 !168 !169 !313 !314 !343 !344 !347) -!349 = span !11 623 627 -!350 = (!79 !168 !169 !313 !314 !343 !344 !349) -!351 = (!79 !168 !169 !313 !314 !343 !344 !92) -!352 = (!79 !168 !169 !313 !314 !343 !344) -!353 = (!79 !168 !169 !313 !314 !343 !344) -!354 = (!79 !168 !169 !313 !314 !343 !344) -!355 = (!79 !168 !169 !313 !314 !343 !344) -!356 = (!79 !168 !169 !313 !314 !343 !344) -!357 = (!79 !168 !169 !313 !314 !343 !344) -!358 = (!79 !168 !169 !313 !314 !343 !344) -!359 = span !11 636 637 -!360 = (!79 !168 !169 !313 !314 !343 !344 !359) -!361 = (!79 !168 !169 !313 !314 !343 !344) -!362 = (!79 !168 !169 !313 !314 !343 !344) -!363 = (!79 !168 !169 !313 !314 !343 !344) -!364 = (!79 !168 !169 !313 !314 !343 !344) -!365 = (!79 !168 !169 !313 !314 !343 !344) -!366 = (!79 !168 !169 !313 !314 !343 !344) -!367 = (!79 !168 !169 !272 !273) -!368 = (!79 !168 !169 !272 !273) -!369 = (!79 !168 !169 !272 !273) -!370 = (!79 !168 !169 !272 !273) -!371 = (!79 !168 !169 !313 !314 !343 !344) -!372 = (!79 !168 !169 !313 !314 !343 !344) -!373 = (!79 !168 !169 !313 !314 !343 !344) -!374 = (!79 !168 !169 !313 !314 !343 !344) -!375 = (!79 !168 !169 !313 !314 !343 !344) -!376 = (!79 !168 !169 !313 !314 !343 !344) -!377 = (!79 !168 !169 !313 !314 !343 !344) -!378 = (!79 !168 !169 !313 !314 !343 !344) -!379 = (!79 !168 !169 !313 !314 !343 !344) -!380 = (!79 !168 !169 !313 !314 !343 !344) -!381 = (!79 !168 !169 !313 !314 !343 !344) -!382 = (!79 !168 !169 !313 !314 !343 !344 !347) -!383 = span !0 703 742 -!384 = (!79 !168 !169 !383) -!385 = span !0 756 760 -!386 = (!79 !168 !169 !385) -!387 = span !14 180 186 -!388 = (!79 !168 !169 !387) -!389 = span !0 774 780 -!390 = (!79 !168 !169 !389) -!391 = span !0 756 781 -!392 = fn_call_path_span !0 763 773 -!393 = (!79 !168 !169 !391 !392) -!394 = (!79 !168 !169 !391 !392) -!395 = span !11 5912 5995 -!396 = (!79 !168 !169 !391 !392 !395) -!397 = span !11 5964 5970 -!398 = (!79 !168 !169 !391 !392 !397) -!399 = (!79 !168 !169 !391 !392 !92) -!400 = (!79 !168 !169 !391 !392) -!401 = (!79 !168 !169 !391 !392) -!402 = (!79 !168 !169 !391 !392) -!403 = (!79 !168 !169 !391 !392) -!404 = (!79 !168 !169 !391 !392) -!405 = (!79 !168 !169 !391 !392) -!406 = (!79 !168 !169 !391 !392) -!407 = span !11 5979 5983 -!408 = (!79 !168 !169 !391 !392 !407) -!409 = (!79 !168 !169 !391 !392) -!410 = (!79 !168 !169 !391 !392) -!411 = (!79 !168 !169 !391 !392) -!412 = (!79 !168 !169 !391 !392) -!413 = (!79 !168 !169 !391 !392) -!414 = (!79 !168 !169 !391 !392) -!415 = (!79 !168 !169 !391 !392) -!416 = (!79 !168 !169 !313 !314 !343 !344) -!417 = (!79 !168 !169 !313 !314 !343 !344) -!418 = (!79 !168 !169 !313 !314 !343 !344) -!419 = (!79 !168 !169 !313 !314 !343 !344) -!420 = (!79 !168 !169 !391 !392) -!421 = (!79 !168 !169 !391 !392) -!422 = (!79 !168 !169 !391 !392) -!423 = (!79 !168 !169 !391 !392) -!424 = (!79 !168 !169 !391 !392) -!425 = (!79 !168 !169 !391 !392) -!426 = (!79 !168 !169 !391 !392) -!427 = (!79 !168 !169 !391 !392) -!428 = (!79 !168 !169 !391 !392) -!429 = (!79 !168 !169 !391 !392) -!430 = (!79 !168 !169 !391 !392) -!431 = (!79 !168 !169 !391 !392 !395) -!432 = span !0 743 782 -!433 = (!79 !168 !169 !432) -!434 = span !0 796 800 -!435 = (!79 !168 !169 !434) -!436 = span !14 192 199 -!437 = (!79 !168 !169 !436) -!438 = span !0 814 820 -!439 = (!79 !168 !169 !438) -!440 = span !0 796 821 -!441 = fn_call_path_span !0 803 813 -!442 = (!79 !168 !169 !440 !441) -!443 = (!79 !168 !169 !440 !441) -!444 = span !11 4704 4787 -!445 = (!79 !168 !169 !440 !441 !444) -!446 = span !11 4756 4762 -!447 = (!79 !168 !169 !440 !441 !446) -!448 = (!79 !168 !169 !440 !441 !92) -!449 = (!79 !168 !169 !440 !441) -!450 = (!79 !168 !169 !440 !441) -!451 = (!79 !168 !169 !440 !441) -!452 = (!79 !168 !169 !440 !441) -!453 = (!79 !168 !169 !440 !441) -!454 = (!79 !168 !169 !440 !441) -!455 = (!79 !168 !169 !440 !441) -!456 = span !11 4771 4775 -!457 = (!79 !168 !169 !440 !441 !456) -!458 = (!79 !168 !169 !440 !441) -!459 = (!79 !168 !169 !440 !441) -!460 = (!79 !168 !169 !440 !441) -!461 = (!79 !168 !169 !391 !392) -!462 = (!79 !168 !169 !391 !392) -!463 = (!79 !168 !169 !391 !392) -!464 = (!79 !168 !169 !391 !392) -!465 = (!79 !168 !169 !440 !441) -!466 = (!79 !168 !169 !440 !441) -!467 = (!79 !168 !169 !440 !441) -!468 = (!79 !168 !169 !440 !441) -!469 = (!79 !168 !169 !440 !441) -!470 = (!79 !168 !169 !440 !441) -!471 = (!79 !168 !169 !440 !441) -!472 = (!79 !168 !169 !440 !441) -!473 = (!79 !168 !169 !440 !441) -!474 = (!79 !168 !169 !440 !441) -!475 = (!79 !168 !169 !440 !441) -!476 = (!79 !168 !169 !440 !441 !444) -!477 = span !0 783 822 -!478 = (!79 !168 !169 !477) -!479 = span !0 840 846 -!480 = (!79 !168 !169 !479) -!481 = span !11 56241 56288 -!482 = (!79 !481) -!483 = span !11 56297 56303 -!484 = (!79 !483) -!485 = (!79 !168 !169 !440 !441) -!486 = (!79 !168 !169 !440 !441) -!487 = (!79 !168 !169 !440 !441) -!488 = (!79 !168 !169 !440 !441) -!489 = (!75 !76 !77) -!490 = (!79 !80) -!491 = (!79 !80) -!492 = (!79 !80) -!493 = (!79 !80) -!494 = (!79 !80) -!495 = (!75 !76 !77) -!496 = (!79 !168 !169) -!497 = span !0 410 414 -!498 = span !0 417 612 -!499 = fn_call_path_span !0 417 612 -!500 = (!79 !168 !169 !498 !499) -!501 = (!79 !168 !169 !498) -!502 = (!79 !168 !169 !497) -!503 = (!79 !168 !169) -!504 = span !0 487 493 -!505 = (!79 !168 !169 !504) -!506 = span !0 471 475 -!507 = span !14 92 97 -!508 = (!79 !168 !169) -!509 = (!79 !168 !169 !497) -!510 = (!79 !168 !169 !497) -!511 = (!79 !168 !169) -!512 = span !0 614 694 -!513 = fn_call_path_span !0 614 694 -!514 = (!79 !168 !169 !512 !513) -!515 = (!79 !168 !169 !512) -!516 = span !0 664 670 -!517 = (!79 !168 !169 !516) -!518 = span !0 648 652 -!519 = (!79 !168 !169) -!520 = span !0 404 698 -!521 = (!79 !168 !169 !520) -!522 = (!75 !76 !77) -!523 = span !14 433 438 ->>>>>>> a94b693b4 (update tests) warning --> test/src/e2e_vm_tests/test_programs/should_pass/language/logging/src/main.sw:27:5 @@ -2604,11 +1621,7 @@ warning ____ Compiled script "logging" with 6 warnings. -<<<<<<< HEAD Finished release [optimized + fuel] target(s) [2.488 KB] in ??? -======= - Finished release [optimized + fuel] target(s) [2.656 KB] in ??? ->>>>>>> a94b693b4 (update tests) > forc test --path test/src/e2e_vm_tests/test_programs/should_pass/language/logging --release exit status: 0 @@ -2704,20 +1717,12 @@ warning ____ Compiled script "logging" with 7 warnings. -<<<<<<< HEAD Finished release [optimized + fuel] target(s) [2.496 KB] in ??? -======= - Finished release [optimized + fuel] target(s) [2.672 KB] in ??? ->>>>>>> a94b693b4 (update tests) Running 1 test, filtered 0 tests tested -- logging -<<<<<<< HEAD test call_main ... ok (???, 4355 gas) -======= - test call_main ... ok (???, 4403 gas) ->>>>>>> a94b693b4 (update tests) test result: OK. 1 passed; 0 failed; finished in ??? diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_ref/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_ref/stdout.snap index dc5813dcd01..ea6abe4d625 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_ref/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_ref/stdout.snap @@ -202,11 +202,7 @@ script { retd v839v1 v841v1, !166 } -<<<<<<< HEAD entry_orig fn main_15(mut baba: __ptr { u64 }) -> u64, !170 { -======= - entry_orig fn main_15(baba: __ptr { u64 }) -> u64, !170 { ->>>>>>> a94b693b4 (update tests) local u64 other_ entry(baba: __ptr { u64 }): @@ -377,7 +373,6 @@ script { !151 = span !0 170 204 !152 = fn_call_path_span !0 170 187 !153 = (!151 !152) -<<<<<<< HEAD !154 = span !4 56805 56854 !155 = (!151 !152 !154) !156 = span !4 56830 56854 @@ -390,20 +385,6 @@ script { !163 = span !4 56942 56946 !164 = (!151 !152 !163) !165 = span !4 56921 56947 -======= -!154 = span !4 56401 56450 -!155 = (!151 !152 !154) -!156 = span !4 56426 56450 -!157 = (!151 !152 !154) -!158 = span !4 56480 56508 -!159 = (!151 !152 !158) -!160 = (!151 !152 !158) -!161 = span !4 56532 56536 -!162 = (!151 !152 !161) -!163 = span !4 56538 56542 -!164 = (!151 !152 !163) -!165 = span !4 56517 56543 ->>>>>>> a94b693b4 (update tests) !166 = (!151 !152 !165) !167 = "test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_ref/src/main.sw" !168 = span !167 46 99 diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_two_u64/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_two_u64/stdout.snap index 51a7d6cfdba..c2bd64e678a 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_two_u64/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_two_u64/stdout.snap @@ -41,7 +41,6 @@ script { mem_copy_val v481v1, v484v1 v140v1 = get_local __ptr { u64, u64 }, args, !16 mem_copy_val v140v1, v481v1 -<<<<<<< HEAD v167v1 = const u64 0 v168v1 = get_elem_ptr v140v1, __ptr u64, v167v1, !17 v169v1 = load v168v1 @@ -58,27 +57,6 @@ script { entry_orig fn main_11(mut baba !28: u64, mut keke !29: u64) -> u64, !32 { entry(mut baba: u64, mut keke: u64): v379v1 = add baba, keke, !35 -======= - v166v1 = get_local __ptr { u64, u64 }, args, !17 - v167v1 = const u64 0 - v168v1 = get_elem_ptr v166v1, __ptr u64, v167v1, !18 - v169v1 = load v168v1 - v170v1 = get_local __ptr { u64, u64 }, args, !19 - v171v1 = const u64 1 - v172v1 = get_elem_ptr v170v1, __ptr u64, v171v1, !20 - v173v1 = load v172v1 - v174v1 = call main_11(v169v1, v173v1), !23 - v175v1 = get_local __ptr u64, _result, !24 - store v174v1 to v175v1, !24 - v194v1 = get_local __ptr u64, _result, !25 - v185v1 = const u64 8 - retd v194v1 v185v1, !29 - } - - entry_orig fn main_11(baba !31: u64, keke !32: u64) -> u64, !35 { - entry(baba: u64, keke: u64): - v379v1 = add baba, keke, !38 ->>>>>>> a94b693b4 (update tests) ret u64 v379v1 } } @@ -96,7 +74,6 @@ script { !10 = span !4 2132 2156 !11 = (!6 !7 !8 !9 !10) !12 = (!6 !7 !8 !9 !10) -<<<<<<< HEAD !13 = span !4 106510 106568 !14 = fn_call_path_span !4 106510 106529 !15 = (!6 !7 !13 !14) @@ -120,34 +97,6 @@ script { !33 = span !27 52 63 !34 = fn_call_path_span !27 57 58 !35 = (!33 !34) -======= -!13 = span !4 106109 106167 -!14 = fn_call_path_span !4 106109 106128 -!15 = (!6 !7 !13 !14) -!16 = span !0 40 100 -!17 = span !0 141 145 -!18 = span !0 146 147 -!19 = span !0 149 153 -!20 = span !0 154 155 -!21 = span !0 136 156 -!22 = fn_call_path_span !0 136 140 -!23 = (!21 !22) -!24 = span !0 117 157 -!25 = span !0 200 207 -!26 = span !0 174 208 -!27 = fn_call_path_span !0 174 191 -!28 = span !4 56517 56543 -!29 = (!26 !27 !28) -!30 = "test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_two_u64/src/main.sw" -!31 = span !30 17 21 -!32 = span !30 28 32 -!33 = span !30 9 65 -!34 = fn_name_span !30 12 16 -!35 = (!33 !34) -!36 = span !30 52 63 -!37 = fn_call_path_span !30 57 58 -!38 = (!36 !37) ->>>>>>> a94b693b4 (update tests) ;; ASM: Final program ;; Program kind: Script @@ -174,13 +123,8 @@ lw $r1 $$locbase i6 ; load word move $$arg0 $r0 ; [call: main_11]: pass argument 0 move $$arg1 $r1 ; [call: main_11]: pass argument 1 jal $$reta $pc i5 ; [call: main_11]: call function -<<<<<<< HEAD addi $r0 $$locbase i32 ; get offset to local __ptr u64 sw $$locbase $$retv i4 ; store word -======= -sw $$locbase $$retv i4 ; store word -addi $r0 $$locbase i32 ; get offset to local __ptr u64 ->>>>>>> a94b693b4 (update tests) movi $r1 i8 ; initialize constant into register retd $r0 $r1 ; [entry end: __entry] return slice pshh i528384 ; [fn init: main_11]: push used high registers 40..64 @@ -212,13 +156,8 @@ jal $zero $$reta i0 ; [fn end: main_11] return from call 0x00000048 MOVE R58 R52 ;; [26, 235, 64, 0] 0x0000004c MOVE R57 R51 ;; [26, 231, 48, 0] 0x00000050 JAL R62 $pc 0x5 ;; [153, 248, 48, 5] -<<<<<<< HEAD 0x00000054 ADDI R52 R59 0x20 ;; [80, 211, 176, 32] 0x00000058 SW R59 R61 0x4 ;; [95, 239, 208, 4] -======= -0x00000054 SW R59 R61 0x4 ;; [95, 239, 208, 4] -0x00000058 ADDI R52 R59 0x20 ;; [80, 211, 176, 32] ->>>>>>> a94b693b4 (update tests) 0x0000005c MOVI R51 0x8 ;; [114, 204, 0, 8] 0x00000060 RETD R52 R51 ;; [37, 211, 48, 0] 0x00000064 PSHH 0x81000 ;; [150, 8, 16, 0] diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_various_types/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_various_types/stdout.snap index c25d11b2d93..8c800aa1d4b 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_various_types/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_various_types/stdout.snap @@ -261,13 +261,10 @@ script { local slice __tmp_arg6 local { { ptr, u64, u64 } } __tmp_block_arg local slice __tmp_block_arg0 -<<<<<<< HEAD local { ptr, u64 } __tuple_1_ local { ptr, u64 } __tuple_1_0 local string<3> a_ local string<3> a_0 -======= ->>>>>>> a94b693b4 (update tests) local { { ptr, u64, u64 } } buffer local { { ptr, u64, u64 } } buffer_ local { { ptr, u64, u64 } } buffer_0 @@ -291,7 +288,6 @@ script { local [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] self_2 local { { ptr, u64, u64 } } self_3 -<<<<<<< HEAD entry(ops: __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], mut __ret_value: __ptr { u64 }): v512v1 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], ops_ mem_copy_val v512v1, ops @@ -678,414 +674,6 @@ script { } pub fn abi_encode_51(mut self !375: u64, mut buffer: __ptr { { ptr, u64, u64 } }, mut __ret_value: __ptr { { ptr, u64, u64 } }) -> (), !378 { -======= - entry(ops: __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], __ret_value: __ptr { u64 }): - v506v1 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], ops_ - mem_copy_val v506v1, ops - v932v1 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], ops_, !172 - v3847v1 = get_local __ptr { { ptr, u64, u64 } }, __struct_init_00, !176 - v875v1 = const u64 1024 - v3848v1 = asm(cap: v875v1) -> ptr hp, !177 { - aloc cap - } - v3849v1 = get_local __ptr { ptr, u64, u64 }, __anon_000, !178 - v879v1 = const u64 0 - v3850v1 = get_elem_ptr v3849v1, __ptr ptr, v879v1, !179 - store v3848v1 to v3850v1, !180 - v882v1 = const u64 1 - v3852v1 = get_elem_ptr v3849v1, __ptr u64, v882v1, !181 - store v875v1 to v3852v1, !182 - v885v1 = const u64 2 - v3854v1 = get_elem_ptr v3849v1, __ptr u64, v885v1, !183 - v877v1 = const u64 0 - store v877v1 to v3854v1, !184 - v4530v1 = asm(buffer: v3849v1) -> __ptr { ptr, u64, u64 } buffer { - } - v4575v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_0 - mem_copy_val v4575v1, v4530v1 - v1201v1 = const u64 0 - v3857v1 = get_elem_ptr v3847v1, __ptr { ptr, u64, u64 }, v1201v1, !185 - mem_copy_val v3857v1, v4575v1 - v3861v1 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], self_2, !188 - mem_copy_val v3861v1, v932v1 - v3863v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_, !189 - mem_copy_val v3863v1, v3847v1 - v3865v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_, !191 - v3867v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__, !193 - mem_copy_val v3867v1, v3865v1 - v598v1 = const u64 0, !194 - br encode_allow_alias_33_abi_encode_46_while(v598v1), !195 - - encode_allow_alias_33_abi_encode_46_while(v3779v1: u64): - v604v1 = const u64 2 - v3876v1 = cmp lt v3779v1 v604v1, !198 - cbr v3876v1, encode_allow_alias_33_abi_encode_46_while_body(), encode_allow_alias_33_abi_encode_46_end_while(), !199 - - encode_allow_alias_33_abi_encode_46_while_body(): - v3908v1 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], self_2, !201 - v3910v1 = get_elem_ptr v3908v1, __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, v3779v1, !203 - v3912v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__, !205 - v3914v1 = get_local __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, self_10, !208 - mem_copy_val v3914v1, v3910v1 - v3916v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_0, !209 - mem_copy_val v3916v1, v3912v1 - v3918v1 = get_local __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, self_10, !211 - v689v1 = const u64 0 - v3919v1 = get_elem_ptr v3918v1, __ptr { string<3> }, v689v1, !213 - v3921v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_0, !215 - v3923v1 = get_local __ptr { string<3> }, self_000, !218 - mem_copy_val v3923v1, v3919v1 - v3925v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_00, !219 - mem_copy_val v3925v1, v3921v1 - v3927v1 = get_local __ptr { string<3> }, self_000, !221 - v677v1 = const u64 0 - v3928v1 = get_elem_ptr v3927v1, __ptr string<3>, v677v1, !223 - v3930v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_00, !225 - v3932v1 = get_local __ptr string<3>, self_0000, !228 - mem_copy_val v3932v1, v3928v1 - v3934v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_000, !229 - mem_copy_val v3934v1, v3930v1 - v3936v1 = get_local __ptr { { ptr, u64, u64 } }, __struct_init_000, !231 - v3937v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_000, !233 - v626v1 = const u64 0 - v3938v1 = get_elem_ptr v3937v1, __ptr { ptr, u64, u64 }, v626v1, !235 - v4532v1 = asm(buffer: v3938v1) -> __ptr { ptr, u64, u64 } buffer { - } - v4587v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_00 - mem_copy_val v4587v1, v4532v1 - v3941v1 = get_local __ptr { ptr, u64, u64 }, __anon_01, !236 - mem_copy_val v3941v1, v4587v1 - v632v1 = const u64 0 - v3943v1 = get_elem_ptr v3941v1, __ptr ptr, v632v1, !237 - v3944v1 = load v3943v1, !238 - v635v1 = const u64 1 - v3945v1 = get_elem_ptr v3941v1, __ptr u64, v635v1, !239 - v3946v1 = load v3945v1, !240 - v638v1 = const u64 2 - v3947v1 = get_elem_ptr v3941v1, __ptr u64, v638v1, !241 - v3948v1 = load v3947v1, !242 - v3949v1 = get_local __ptr string<3>, self_0000, !244 - v643v1 = const u64 3 - v3951v1 = add v3948v1, v643v1, !245 - v3952v1 = cmp gt v3951v1 v3946v1, !246 - cbr v3952v1, encode_allow_alias_33_abi_encode_46_abi_encode_47_abi_encode_48_abi_encode_49_block1(), encode_allow_alias_33_abi_encode_46_abi_encode_47_abi_encode_48_abi_encode_49_block0(v3944v1, v3946v1), !247 - - encode_allow_alias_33_abi_encode_46_abi_encode_47_abi_encode_48_abi_encode_49_block0(v3781v1: ptr, v3782v1: u64): - v3959v1 = get_local __ptr string<3>, __anon_10, !248 - mem_copy_val v3959v1, v3949v1 - v3961v1 = add v3781v1, v3948v1, !249 - v3962v1 = cast_ptr v3961v1 to __ptr u8, !250 - mem_copy_bytes v3962v1, v3959v1, 3, !251 - v3965v1 = get_local __ptr { ptr, u64, u64 }, __anon_20, !252 - v663v1 = const u64 0 - v3966v1 = get_elem_ptr v3965v1, __ptr ptr, v663v1, !253 - store v3781v1 to v3966v1, !254 - v666v1 = const u64 1 - v3968v1 = get_elem_ptr v3965v1, __ptr u64, v666v1, !255 - store v3782v1 to v3968v1, !256 - v669v1 = const u64 2 - v3970v1 = get_elem_ptr v3965v1, __ptr u64, v669v1, !257 - store v3951v1 to v3970v1, !258 - v4534v1 = asm(buffer: v3965v1) -> __ptr { ptr, u64, u64 } buffer { - } - v4591v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_01 - mem_copy_val v4591v1, v4534v1 - v1195v1 = const u64 0 - v3973v1 = get_elem_ptr v3936v1, __ptr { ptr, u64, u64 }, v1195v1, !259 - mem_copy_val v3973v1, v4591v1 - v3977v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__00, !261 - mem_copy_val v3977v1, v3936v1 - v3979v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__00, !263 - v3982v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__0, !265 - mem_copy_val v3982v1, v3979v1 - v3984v1 = get_local __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, self_10, !267 - v834v1 = const u64 1 - v3985v1 = get_elem_ptr v3984v1, __ptr { u64, ( u64 | u64 ) }, v834v1, !269 - v3987v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__0, !271 - v3989v1 = get_local __ptr { u64, ( u64 | u64 ) }, self_100, !274 - mem_copy_val v3989v1, v3985v1 - v3991v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_1, !275 - mem_copy_val v3991v1, v3987v1 - v3993v1 = get_local __ptr { u64, ( u64 | u64 ) }, self_100, !277 - v3995v1 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_10, !279 - mem_copy_val v3995v1, v3993v1 - v3997v1 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_10, !280 - v708v1 = const u64 0 - v3998v1 = get_elem_ptr v3997v1, __ptr u64, v708v1, !281 - v3999v1 = load v3998v1, !282 - v711v1 = const u64 0, !276 - v4004v1 = cmp eq v3999v1 v711v1, !285 - cbr v4004v1, encode_allow_alias_33_abi_encode_46_abi_encode_47_abi_encode_50_block0(), encode_allow_alias_33_abi_encode_46_abi_encode_47_abi_encode_50_block1(), !286 - - encode_allow_alias_33_abi_encode_46_abi_encode_47_abi_encode_48_abi_encode_49_block1(): - v649v1 = const u64 2 - v3955v1 = mul v3946v1, v649v1, !287 - v3956v1 = add v3955v1, v643v1, !288 - v3957v1 = asm(new_cap: v3956v1, old_ptr: v3944v1, len: v3948v1) -> __ptr u8 hp, !289 { - aloc new_cap - mcp hp old_ptr len - } - br encode_allow_alias_33_abi_encode_46_abi_encode_47_abi_encode_48_abi_encode_49_block0(v3957v1, v3956v1), !290 - - encode_allow_alias_33_abi_encode_46_abi_encode_47_abi_encode_50_block0(): - v4037v1 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_10, !291 - v714v1 = const u64 1 - v715v1 = const u64 0 - v4038v1 = get_elem_ptr v4037v1, __ptr u64, v714v1, v715v1, !292 - v4039v1 = load v4038v1, !293 - v4041v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_1, !295 - v4471v1 = get_local __ptr { { ptr, u64, u64 } }, __tmp_arg - mem_copy_val v4471v1, v4041v1 - v4509v1 = get_local __ptr { { ptr, u64, u64 } }, __ret_val - v776v1 = const u64 0, !296 - v4510v1 = call abi_encode_51(v776v1, v4471v1, v4509v1) - v4044v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__1, !298 - mem_copy_val v4044v1, v4509v1 - v4047v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__1, !300 - v4474v1 = get_local __ptr { { ptr, u64, u64 } }, __tmp_arg0 - mem_copy_val v4474v1, v4047v1 - v4512v1 = get_local __ptr { { ptr, u64, u64 } }, __ret_val0 - v4513v1 = call abi_encode_51(v4039v1, v4474v1, v4512v1) - v4050v1 = get_local __ptr { { ptr, u64, u64 } }, buffer___0, !302 - mem_copy_val v4050v1, v4512v1 - v4052v1 = get_local __ptr { { ptr, u64, u64 } }, buffer___0, !304 - v4461v1 = get_local __ptr { { ptr, u64, u64 } }, __tmp_block_arg - mem_copy_val v4461v1, v4052v1 - br encode_allow_alias_33_abi_encode_46_abi_encode_47_abi_encode_50_block5(v4461v1), !305 - - encode_allow_alias_33_abi_encode_46_abi_encode_47_abi_encode_50_block1(): - v4007v1 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_10, !306 - v792v1 = const u64 0 - v4008v1 = get_elem_ptr v4007v1, __ptr u64, v792v1, !307 - v4009v1 = load v4008v1, !308 - v795v1 = const u64 1, !276 - v4014v1 = cmp eq v4009v1 v795v1, !311 - cbr v4014v1, encode_allow_alias_33_abi_encode_46_abi_encode_47_abi_encode_50_block2(), encode_allow_alias_33_abi_encode_46_abi_encode_47_abi_encode_50_block3(), !312 - - encode_allow_alias_33_abi_encode_46_abi_encode_47_abi_encode_50_block2(): - v4018v1 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_10, !313 - v798v1 = const u64 1 - v799v1 = const u64 1 - v4019v1 = get_elem_ptr v4018v1, __ptr u64, v798v1, v799v1, !314 - v4020v1 = load v4019v1, !315 - v4022v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_1, !317 - v4477v1 = get_local __ptr { { ptr, u64, u64 } }, __tmp_arg1 - mem_copy_val v4477v1, v4022v1 - v4515v1 = get_local __ptr { { ptr, u64, u64 } }, __ret_val1 - v804v1 = const u64 1, !318 - v4516v1 = call abi_encode_51(v804v1, v4477v1, v4515v1) - v4025v1 = get_local __ptr { { ptr, u64, u64 } }, buffer____, !320 - mem_copy_val v4025v1, v4515v1 - v4028v1 = get_local __ptr { { ptr, u64, u64 } }, buffer____, !322 - v4480v1 = get_local __ptr { { ptr, u64, u64 } }, __tmp_arg2 - mem_copy_val v4480v1, v4028v1 - v4518v1 = get_local __ptr { { ptr, u64, u64 } }, __ret_val2 - v4519v1 = call abi_encode_51(v4020v1, v4480v1, v4518v1) - v4031v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_____, !324 - mem_copy_val v4031v1, v4518v1 - v4033v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_____, !326 - v4459v1 = get_local __ptr { { ptr, u64, u64 } }, __tmp_block_arg - mem_copy_val v4459v1, v4033v1 - br encode_allow_alias_33_abi_encode_46_abi_encode_47_abi_encode_50_block5(v4459v1), !327 - - encode_allow_alias_33_abi_encode_46_abi_encode_47_abi_encode_50_block3(): - v819v1 = const u64 14757395258967588866, !278 - revert v819v1, !328 - - encode_allow_alias_33_abi_encode_46_abi_encode_47_abi_encode_50_block5(v4457v1: __ptr { { ptr, u64, u64 } }): - v4055v1 = get_local __ptr { { ptr, u64, u64 } }, buffer______, !330 - mem_copy_val v4055v1, v4457v1 - v4057v1 = get_local __ptr { { ptr, u64, u64 } }, buffer______, !332 - v4060v1 = get_local __ptr { { ptr, u64, u64 } }, buffer___, !334 - mem_copy_val v4060v1, v4057v1 - v4062v1 = get_local __ptr { { ptr, u64, u64 } }, buffer___, !336 - v4065v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__, !338 - mem_copy_val v4065v1, v4062v1 - v858v1 = const u64 1, !339 - v4072v1 = add v3779v1, v858v1, !342 - br encode_allow_alias_33_abi_encode_46_while(v4072v1), !343 - - encode_allow_alias_33_abi_encode_46_end_while(): - v3879v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__, !345 - v3882v1 = get_local __ptr { { ptr, u64, u64 } }, buffer, !347 - mem_copy_val v3882v1, v3879v1 - v3884v1 = get_local __ptr { { ptr, u64, u64 } }, buffer, !349 - v3886v1 = get_local __ptr { { ptr, u64, u64 } }, self_3, !352 - mem_copy_val v3886v1, v3884v1 - v3888v1 = get_local __ptr { { ptr, u64, u64 } }, self_3, !354 - v900v1 = const u64 0 - v3889v1 = get_elem_ptr v3888v1, __ptr { ptr, u64, u64 }, v900v1, !355 - v4536v1 = asm(buffer: v3889v1) -> __ptr { ptr, u64, u64 } buffer { - } - v4614v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_02 - mem_copy_val v4614v1, v4536v1 - v3892v1 = get_local __ptr { ptr, u64, u64 }, __anon_02, !356 - mem_copy_val v3892v1, v4614v1 - v906v1 = const u64 0 - v3894v1 = get_elem_ptr v3892v1, __ptr ptr, v906v1, !357 - v912v1 = const u64 2 - v3898v1 = get_elem_ptr v3892v1, __ptr u64, v912v1, !358 - v3900v1 = get_local __ptr { ptr, u64 }, __anon_100, !359 - v916v1 = const u64 0 - v3901v1 = get_elem_ptr v3900v1, __ptr ptr, v916v1, !360 - mem_copy_val v3901v1, v3894v1 - v919v1 = const u64 1 - v3903v1 = get_elem_ptr v3900v1, __ptr u64, v919v1, !361 - mem_copy_val v3903v1, v3898v1 - v4538v1 = asm(s: v3900v1) -> __ptr slice s { - } - v4619v1 = get_local __ptr slice, __aggr_memcpy_03 - mem_copy_val v4619v1, v4538v1 - v4467v1 = get_local __ptr slice, __tmp_block_arg0 - mem_copy_val v4467v1, v4619v1 - v4527v1 = get_local __ptr slice, __log_arg - mem_copy_val v4527v1, v4467v1 - v934v1 = const u64 3647243719605075626 - log __ptr slice v4527v1, v934v1 - v1015v1 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], ops_, !362 - v1016v1 = const u64 0, !363 - v1017v1 = get_elem_ptr v1015v1, __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, v1016v1, !364 - v1018v1 = const u64 0 - v1019v1 = get_elem_ptr v1017v1, __ptr { string<3> }, v1018v1, !365 - v1020v1 = const u64 0 - v1021v1 = get_elem_ptr v1019v1, __ptr string<3>, v1020v1, !222 - v1024v1 = get_global __ptr string<3>, __const_global - v1025v1 = cast_ptr v1024v1 to ptr, !366 - v1027v1 = get_local __ptr { ptr, u64 }, __anon_0, !366 - v1028v1 = const u64 0 - v1029v1 = get_elem_ptr v1027v1, __ptr ptr, v1028v1 - store v1025v1 to v1029v1, !366 - v1031v1 = const u64 1 - v1032v1 = get_elem_ptr v1027v1, __ptr u64, v1031v1 - v1026v1 = const u64 3 - store v1026v1 to v1032v1, !366 - v1034v1 = get_local __ptr slice, __anon_1, !366 - mem_copy_bytes v1034v1, v1027v1, 16 - v4487v1 = get_local __ptr string<3>, __tmp_arg3 - mem_copy_val v4487v1, v1021v1 - v4489v1 = get_local __ptr slice, __tmp_arg4 - mem_copy_val v4489v1, v1034v1 - v4491v1 = call eq_str_3_57(v4487v1, v4489v1) - v945v1 = const bool false, !368 - v1038v3 = cmp eq v4491v1 v945v1, !374 - cbr v1038v3, assert_54_block0(), assert_54_block1(), !375 - - assert_54_block0(): - v1206v1 = const u64 18446744073709486084 - revert v1206v1, !380 - - assert_54_block1(): - v1039v1 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], ops_, !381 - v1040v1 = const u64 0, !382 - v1041v1 = get_elem_ptr v1039v1, __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, v1040v1, !383 - v1042v1 = const u64 1 - v1043v1 = get_elem_ptr v1041v1, __ptr { u64, ( u64 | u64 ) }, v1042v1, !384 - v1045v1 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_1, !385 - mem_copy_val v1045v1, v1043v1 - v1047v1 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_1, !386 - v1048v1 = const u64 0 - v1049v1 = get_elem_ptr v1047v1, __ptr u64, v1048v1, !386 - v1050v1 = load v1049v1 - v1051v1 = const u64 0, !386 - v4095v1 = cmp eq v1050v1 v1051v1, !389 - cbr v4095v1, block0(), block1(), !387 - - block0(): - v1053v1 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_1, !386 - v1054v1 = const u64 1 - v1055v1 = const u64 0 - v1056v1 = get_elem_ptr v1053v1, __ptr u64, v1054v1, v1055v1 - v1057v1 = load v1056v1 - v1068v1 = const u64 1338, !390 - v4104v1 = cmp eq v1057v1 v1068v1, !393 - v1070v3 = cmp eq v4104v1 v945v1, !396 - cbr v1070v3, assert_54_block015(), assert_54_block116(), !397 - - assert_54_block015(): - revert v1206v1, !398 - - assert_54_block116(): - v1071v1 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], ops_, !399 - v1072v1 = const u64 1, !400 - v1073v1 = get_elem_ptr v1071v1, __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, v1072v1, !401 - v1074v1 = const u64 0 - v1075v1 = get_elem_ptr v1073v1, __ptr { string<3> }, v1074v1, !402 - v1076v1 = const u64 0 - v1077v1 = get_elem_ptr v1075v1, __ptr string<3>, v1076v1, !222 - v1080v1 = get_global __ptr string<3>, __const_global0 - v1081v1 = cast_ptr v1080v1 to ptr, !403 - v1083v1 = get_local __ptr { ptr, u64 }, __anon_2, !403 - v1084v1 = const u64 0 - v1085v1 = get_elem_ptr v1083v1, __ptr ptr, v1084v1 - store v1081v1 to v1085v1, !403 - v1087v1 = const u64 1 - v1088v1 = get_elem_ptr v1083v1, __ptr u64, v1087v1 - v1082v1 = const u64 3 - store v1082v1 to v1088v1, !403 - v1090v1 = get_local __ptr slice, __anon_3, !403 - mem_copy_bytes v1090v1, v1083v1, 16 - v4492v1 = get_local __ptr string<3>, __tmp_arg5 - mem_copy_val v4492v1, v1077v1 - v4494v1 = get_local __ptr slice, __tmp_arg6 - mem_copy_val v4494v1, v1090v1 - v4496v1 = call eq_str_3_57(v4492v1, v4494v1) - v1094v3 = cmp eq v4496v1 v945v1, !406 - cbr v1094v3, assert_54_block018(), assert_54_block119(), !407 - - assert_54_block018(): - revert v1206v1, !408 - - assert_54_block119(): - v1095v1 = get_local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2], ops_, !409 - v1096v1 = const u64 1, !410 - v1097v1 = get_elem_ptr v1095v1, __ptr { { string<3> }, { u64, ( u64 | u64 ) } }, v1096v1, !411 - v1098v1 = const u64 1 - v1099v1 = get_elem_ptr v1097v1, __ptr { u64, ( u64 | u64 ) }, v1098v1, !412 - v1101v1 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_2, !413 - mem_copy_val v1101v1, v1099v1 - v1103v1 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_2, !414 - v1104v1 = const u64 0 - v1105v1 = get_elem_ptr v1103v1, __ptr u64, v1104v1, !414 - v1106v1 = load v1105v1 - v1107v1 = const u64 1, !414 - v4110v1 = cmp eq v1106v1 v1107v1, !417 - cbr v4110v1, block3(), block4(), !415 - - block1(): - v1062v1 = const u64 1, !418 - revert v1062v1, !421 - - block3(): - v1109v1 = get_local __ptr { u64, ( u64 | u64 ) }, __matched_value_2, !414 - v1110v1 = const u64 1 - v1111v1 = const u64 1 - v1112v1 = get_elem_ptr v1109v1, __ptr u64, v1110v1, v1111v1 - v1113v1 = load v1112v1 - v1124v1 = const u64 1, !422 - v4119v1 = cmp eq v1113v1 v1124v1, !425 - v1126v3 = cmp eq v4119v1 v945v1, !428 - cbr v1126v3, assert_54_block021(), assert_54_block122(), !429 - - assert_54_block021(): - revert v1206v1, !430 - - assert_54_block122(): - v1127v1 = get_local __ptr { u64 }, __struct_init_0, !431 - v1186v1 = const u64 0 - v1187v1 = get_elem_ptr v1127v1, __ptr u64, v1186v1, !431 - v1128v1 = const u64 1, !432 - store v1128v1 to v1187v1, !431 - mem_copy_val __ret_value, v1127v1 - v4500v1 = const unit () - ret () v4500v1 - - block4(): - v1118v1 = const u64 2, !433 - revert v1118v1, !436 - } - - pub fn abi_encode_51(self !437: u64, buffer: __ptr { { ptr, u64, u64 } }, __ret_value: __ptr { { ptr, u64, u64 } }) -> (), !440 { ->>>>>>> a94b693b4 (update tests) local mut { ptr, u64, u64 } __aggr_memcpy_0 local mut { ptr, u64, u64 } __aggr_memcpy_00 local { ptr, u64, u64 } __anon_0 @@ -1093,31 +681,14 @@ script { local { { ptr, u64, u64 } } __struct_init_0 local { { ptr, u64, u64 } } buffer_ -<<<<<<< HEAD entry(mut self: u64, buffer: __ptr { { ptr, u64, u64 } }, mut __ret_value: __ptr { { ptr, u64, u64 } }): v730v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_ mem_copy_val v730v1, buffer v732v1 = get_local __ptr { { ptr, u64, u64 } }, __struct_init_0, !379 -======= - entry(self: u64, buffer: __ptr { { ptr, u64, u64 } }, __ret_value: __ptr { { ptr, u64, u64 } }): - v724v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_ - mem_copy_val v724v1, buffer - v726v1 = get_local __ptr { { ptr, u64, u64 } }, __struct_init_0, !441 - v727v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_, !442 - v728v1 = const u64 0 - v729v1 = get_elem_ptr v727v1, __ptr { ptr, u64, u64 }, v728v1, !234 - v4540v1 = asm(buffer: v729v1) -> __ptr { ptr, u64, u64 } buffer { - } - v4631v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_0 - mem_copy_val v4631v1, v4540v1 - v732v1 = get_local __ptr { ptr, u64, u64 }, __anon_0 - mem_copy_val v732v1, v4631v1 ->>>>>>> a94b693b4 (update tests) v734v1 = const u64 0 v735v1 = get_elem_ptr v730v1, __ptr { ptr, u64, u64 }, v734v1, !208 v4611v1 = asm(buffer: v735v1) -> __ptr { ptr, u64, u64 } buffer { } -<<<<<<< HEAD v4698v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_0 mem_copy_val v4698v1, v4611v1 v738v1 = get_local __ptr { ptr, u64, u64 }, __anon_0 @@ -1160,16 +731,6 @@ script { mem_copy_val __ret_value, v732v1 v4582v1 = const unit () ret () v4582v1 -======= - v4634v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_00 - mem_copy_val v4634v1, v4542v1 - v1198v1 = const u64 0 - v1199v1 = get_elem_ptr v726v1, __ptr { ptr, u64, u64 }, v1198v1, !441 - mem_copy_val v1199v1, v4634v1 - mem_copy_val __ret_value, v726v1 - v4507v1 = const unit () - ret () v4507v1 ->>>>>>> a94b693b4 (update tests) block1(): v757v1 = const u64 2 @@ -1179,49 +740,7 @@ script { aloc new_cap mcp hp old_ptr len } -<<<<<<< HEAD br block0(v760v1, v759v1) -======= - br block0(v754v1, v753v1) - } - - fn eq_str_3_57(a: __ptr string<3>, b: __ptr slice) -> bool, !445 { - local { ptr, u64 } __tuple_1_ - local string<3> a_ - local slice self_ - - entry(a: __ptr string<3>, b: __ptr slice): - v972v1 = get_local __ptr string<3>, a_ - mem_copy_val v972v1, a - v1005v3 = get_local __ptr slice, self_, !448 - mem_copy_val v1005v3, b - v3730v1 = get_local __ptr slice, self_, !451 - v4544v1 = asm(s: v3730v1) -> __ptr { ptr, u64 } s { - } - v4644v1 = const u64 0 - v4645v1 = get_elem_ptr v4544v1, __ptr ptr, v4644v1 - v4646v1 = load v4645v1 - v4647v1 = const u64 1 - v4648v1 = get_elem_ptr v4544v1, __ptr u64, v4647v1 - v4649v1 = load v4648v1 - v3737v1 = get_local __ptr { ptr, u64 }, __tuple_1_, !453 - v4666v1 = const u64 0 - v4667v1 = get_elem_ptr v3737v1, __ptr ptr, v4666v1 - store v4646v1 to v4667v1 - v4669v1 = const u64 1 - v4670v1 = get_elem_ptr v3737v1, __ptr u64, v4669v1 - store v4649v1 to v4670v1 - v3739v1 = get_local __ptr { ptr, u64 }, __tuple_1_, !454 - v989v1 = const u64 0 - v3740v1 = get_elem_ptr v3739v1, __ptr ptr, v989v1, !455 - v3741v1 = load v3740v1, !448 - v1008v1 = get_local __ptr string<3>, a_, !456 - v1012v1 = const u64 3, !457 - v1013v1 = asm(a: v1008v1, b: v3741v1, len: v1012v1, r) -> bool r, !458 { - meq r a b len, !459 - } - ret bool v1013v1 ->>>>>>> a94b693b4 (update tests) } } @@ -1246,7 +765,6 @@ script { !18 = (!6 !7 !13 !14 !15) !19 = span !4 106366 106404 !20 = (!6 !7 !13 !14 !19) -<<<<<<< HEAD !21 = span !4 106413 106434 !22 = fn_call_path_span !4 106413 106426 !23 = span !4 62441 62466 @@ -1606,447 +1124,6 @@ script { !377 = fn_name_span !4 5292 5302 !378 = (!376 !377) !379 = span !4 5345 5428 -======= -!21 = span !4 106026 106032 -!22 = (!6 !7 !13 !14 !21) -!23 = span !4 106012 106033 -!24 = fn_call_path_span !4 106012 106025 -!25 = span !4 62040 62065 -!26 = (!6 !7 !13 !14 !23 !24 !25) -!27 = span !4 62041 62062 -!28 = fn_call_path_span !4 62041 62054 -!29 = span !4 61262 61275 -!30 = (!6 !7 !13 !14 !23 !24 !27 !28 !29) -!31 = (!6 !7 !13 !14 !23 !24 !27 !28 !29) -!32 = span !4 61246 61276 -!33 = (!6 !7 !13 !14 !23 !24 !27 !28 !32) -!34 = span !4 61361 61366 -!35 = (!6 !7 !13 !14 !23 !24 !27 !28 !34) -!36 = (!6 !7 !13 !14 !23 !24 !27 !28) -!37 = span !4 61390 61391 -!38 = (!6 !7 !13 !14 !23 !24 !27 !28) -!39 = span !4 61408 61413 -!40 = fn_call_path_span !4 61410 61411 -!41 = (!6 !7 !13 !14 !23 !24 !27 !28 !39 !40) -!42 = (!6 !7 !13 !14 !23 !24 !27 !28) -!43 = (!6 !7 !13 !14 !23 !24 !27 !28) -!44 = span !4 61488 61508 -!45 = fn_call_path_span !4 61495 61501 -!46 = span !4 3659 3678 -!47 = fn_call_path_span !4 3659 3672 -!48 = span !4 62438 62484 -!49 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !48) -!50 = span !4 62439 62460 -!51 = fn_call_path_span !4 62439 62452 -!52 = span !0 372 412 -!53 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !50 !51 !52) -!54 = span !0 384 409 -!55 = fn_call_path_span !0 391 397 -!56 = span !4 60573 60593 -!57 = fn_call_path_span !4 60580 60590 -!58 = span !4 2890 2907 -!59 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !50 !51 !54 !55 !46 !47 !56 !57 !58) -!60 = span !4 818 834 -!61 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !50 !51 !54 !55 !46 !47 !56 !57 !60) -!62 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !50 !51 !54 !55 !46 !47 !56 !57 !58) -!63 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !50 !51 !54 !55 !46 !47 !56 !57 !58) -!64 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !50 !51 !54 !55 !46 !47 !56 !57 !58) -!65 = span !4 2869 2948 -!66 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !50 !51 !54 !55 !46 !47 !56 !57 !65) -!67 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !50 !51 !54 !55 !46 !47 !56 !57) -!68 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !50 !51 !54 !55 !46 !47 !56 !57) -!69 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !50 !51 !54 !55 !46 !47 !56 !57) -!70 = span !4 2957 3000 -!71 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !50 !51 !54 !55 !46 !47 !56 !57 !70) -!72 = span !4 3010 3015 -!73 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !50 !51 !54 !55 !46 !47 !56 !57 !72) -!74 = span !4 60562 60594 -!75 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !50 !51 !54 !55 !46 !47 !74) -!76 = span !4 60610 60614 -!77 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !50 !51 !54 !55 !46 !47 !76) -!78 = span !4 60610 60620 -!79 = fn_call_path_span !4 60615 60618 -!80 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !50 !51 !54 !55 !46 !47 !78 !79) -!81 = "sway-lib-std/src/raw_slice.sw" -!82 = span !81 3732 3736 -!83 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !50 !51 !54 !55 !46 !47 !78 !79 !82) -!84 = span !81 3721 3737 -!85 = fn_call_path_span !81 3721 3731 -!86 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !50 !51 !54 !55 !46 !47 !78 !79 !84 !85) -!87 = span !81 1685 1690 -!88 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !50 !51 !54 !55 !46 !47 !78 !79 !84 !85 !87) -!89 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !50 !51 !54 !55 !46 !47 !78 !79) -!90 = span !81 3738 3739 -!91 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !50 !51 !54 !55 !46 !47 !78 !79 !90) -!92 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !50 !51 !54 !55 !46 !47 !78 !79) -!93 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !50 !51 !52) -!94 = span !4 62462 62483 -!95 = fn_call_path_span !4 62462 62475 -!96 = span !0 309 331 -!97 = fn_call_path_span !0 316 322 -!98 = span !4 58454 58482 -!99 = fn_call_path_span !4 58461 58473 -!100 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95 !96 !97 !46 !47 !98 !99) -!101 = span !4 2466 2547 -!102 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95 !96 !97 !46 !47 !98 !99 !101) -!103 = span !4 2504 2517 -!104 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95 !96 !97 !46 !47 !98 !99) -!105 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95 !96 !97 !46 !47 !98 !99) -!106 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95 !96 !97 !46 !47 !98 !99) -!107 = span !4 2557 2596 -!108 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95 !96 !97 !46 !47 !98 !99 !107) -!109 = span !0 349 350 -!110 = span !0 349 398 -!111 = fn_call_path_span !0 349 398 -!112 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95 !110 !111) -!113 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95 !110) -!114 = "test/src/e2e_vm_tests/test_programs/should_pass/language/main_args/main_args_various_types/src/main.sw" -!115 = span !114 204 260 -!116 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95 !115) -!117 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95 !115) -!118 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95 !115) -!119 = span !0 374 396 -!120 = fn_call_path_span !0 381 387 -!121 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95 !119 !120 !46 !47 !98 !99) -!122 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95 !119 !120 !46 !47 !98 !99 !101) -!123 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95 !119 !120 !46 !47 !98 !99) -!124 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95 !119 !120 !46 !47 !98 !99) -!125 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95 !119 !120 !46 !47 !98 !99) -!126 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95 !119 !120 !46 !47 !98 !99 !107) -!127 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95 !115) -!128 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95 !115) -!129 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95) -!130 = span !0 400 401 -!131 = span !0 400 449 -!132 = fn_call_path_span !0 400 449 -!133 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95 !131 !132) -!134 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95 !131) -!135 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95 !115) -!136 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95 !115) -!137 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95 !115) -!138 = span !0 425 447 -!139 = fn_call_path_span !0 432 438 -!140 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95 !138 !139 !46 !47 !98 !99) -!141 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95 !138 !139 !46 !47 !98 !99 !101) -!142 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95 !138 !139 !46 !47 !98 !99) -!143 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95 !138 !139 !46 !47 !98 !99) -!144 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95 !138 !139 !46 !47 !98 !99) -!145 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95 !138 !139 !46 !47 !98 !99 !107) -!146 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95 !115) -!147 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95 !115) -!148 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95) -!149 = span !0 466 467 -!150 = span !0 457 468 -!151 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !94 !95 !150) -!152 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !48) -!153 = (!6 !7 !13 !14 !23 !24 !27 !28 !44 !45 !46 !47 !48) -!154 = span !4 61527 61528 -!155 = span !4 61522 61528 -!156 = fn_call_path_span !4 61524 61526 -!157 = (!6 !7 !13 !14 !23 !24 !27 !28 !155 !156) -!158 = (!6 !7 !13 !14 !23 !24 !27 !28) -!159 = (!6 !7 !13 !14 !23 !24 !25) -!160 = span !0 40 132 -!161 = span !0 178 182 -!162 = span !0 183 184 -!163 = span !0 149 186 -!164 = span !0 234 241 -!165 = span !0 203 242 -!166 = fn_call_path_span !0 203 220 -!167 = span !4 56517 56543 -!168 = (!165 !166 !167) -!169 = span !114 297 695 -!170 = fn_name_span !114 300 304 -!171 = (!169 !170) -!172 = span !114 360 363 -!173 = span !4 56273 56286 -!174 = fn_call_path_span !4 56273 56284 -!175 = span !4 231 294 -!176 = (!172 !173 !174 !175) -!177 = (!172 !173 !174) -!178 = (!172 !173 !174) -!179 = (!172 !173 !174) -!180 = (!172 !173 !174) -!181 = (!172 !173 !174) -!182 = (!172 !173 !174) -!183 = (!172 !173 !174) -!184 = (!172 !173 !174) -!185 = (!172 !173 !174 !175) -!186 = span !4 56254 56287 -!187 = fn_call_path_span !4 56262 56272 -!188 = (!172 !186 !187) -!189 = (!172 !186 !187) -!190 = span !4 7240 7246 -!191 = (!172 !186 !187 !190) -!192 = span !4 7223 7247 -!193 = (!172 !186 !187 !192) -!194 = span !4 7268 7269 -!195 = (!172 !186 !187) -!196 = span !4 7286 7291 -!197 = fn_call_path_span !4 7288 7289 -!198 = (!172 !186 !187 !196 !197) -!199 = (!172 !186 !187) -!200 = span !4 7315 7319 -!201 = (!172 !186 !187 !200) -!202 = span !4 7315 7322 -!203 = (!172 !186 !187 !202) -!204 = span !4 7334 7340 -!205 = (!172 !186 !187 !204) -!206 = span !4 7315 7341 -!207 = fn_call_path_span !4 7323 7333 -!208 = (!172 !186 !187 !206 !207) -!209 = (!172 !186 !187 !206 !207) -!210 = span !4 8319 8323 -!211 = (!172 !186 !187 !206 !207 !210) -!212 = span !4 8324 8325 -!213 = (!172 !186 !187 !206 !207 !212) -!214 = span !4 8337 8343 -!215 = (!172 !186 !187 !206 !207 !214) -!216 = span !4 8319 8344 -!217 = fn_call_path_span !4 8326 8336 -!218 = (!172 !186 !187 !206 !207 !216 !217) -!219 = (!172 !186 !187 !206 !207 !216 !217) -!220 = span !0 379 383 -!221 = (!172 !186 !187 !206 !207 !216 !217 !220) -!222 = span !114 282 293 -!223 = (!172 !186 !187 !206 !207 !216 !217 !222) -!224 = span !0 399 405 -!225 = (!172 !186 !187 !206 !207 !216 !217 !224) -!226 = span !0 379 406 -!227 = fn_call_path_span !0 388 398 -!228 = (!172 !186 !187 !206 !207 !216 !217 !226 !227) -!229 = (!172 !186 !187 !206 !207 !216 !217 !226 !227) -!230 = span !4 6355 6438 -!231 = (!172 !186 !187 !206 !207 !216 !217 !226 !227 !230) -!232 = span !4 6407 6413 -!233 = (!172 !186 !187 !206 !207 !216 !217 !226 !227 !232) -!234 = span !4 127 154 -!235 = (!172 !186 !187 !206 !207 !216 !217 !226 !227 !234) -!236 = (!172 !186 !187 !206 !207 !216 !217 !226 !227) -!237 = (!172 !186 !187 !206 !207 !216 !217 !226 !227) -!238 = (!172 !186 !187 !206 !207 !216 !217 !226 !227) -!239 = (!172 !186 !187 !206 !207 !216 !217 !226 !227) -!240 = (!172 !186 !187 !206 !207 !216 !217 !226 !227) -!241 = (!172 !186 !187 !206 !207 !216 !217 !226 !227) -!242 = (!172 !186 !187 !206 !207 !216 !217 !226 !227) -!243 = span !4 6422 6426 -!244 = (!172 !186 !187 !206 !207 !216 !217 !226 !227 !243) -!245 = (!172 !186 !187 !206 !207 !216 !217 !226 !227) -!246 = (!172 !186 !187 !206 !207 !216 !217 !226 !227) -!247 = (!172 !186 !187 !206 !207 !216 !217 !226 !227) -!248 = (!172 !186 !187 !206 !207 !216 !217 !226 !227) -!249 = (!172 !186 !187 !206 !207 !216 !217 !226 !227) -!250 = (!172 !186 !187 !206 !207 !216 !217 !226 !227) -!251 = (!172 !186 !187 !206 !207 !216 !217 !226 !227) -!252 = (!172 !186 !187 !206 !207 !216 !217 !226 !227) -!253 = (!172 !186 !187 !206 !207 !216 !217 !226 !227) -!254 = (!172 !186 !187 !206 !207 !216 !217 !226 !227) -!255 = (!172 !186 !187 !206 !207 !216 !217 !226 !227) -!256 = (!172 !186 !187 !206 !207 !216 !217 !226 !227) -!257 = (!172 !186 !187 !206 !207 !216 !217 !226 !227) -!258 = (!172 !186 !187 !206 !207 !216 !217 !226 !227) -!259 = (!172 !186 !187 !206 !207 !216 !217 !226 !227 !230) -!260 = span !0 366 407 -!261 = (!172 !186 !187 !206 !207 !216 !217 !260) -!262 = span !0 425 431 -!263 = (!172 !186 !187 !206 !207 !216 !217 !262) -!264 = span !4 8306 8345 -!265 = (!172 !186 !187 !206 !207 !264) -!266 = span !4 8367 8371 -!267 = (!172 !186 !187 !206 !207 !266) -!268 = span !4 8372 8373 -!269 = (!172 !186 !187 !206 !207 !268) -!270 = span !4 8385 8391 -!271 = (!172 !186 !187 !206 !207 !270) -!272 = span !4 8367 8392 -!273 = fn_call_path_span !4 8374 8384 -!274 = (!172 !186 !187 !206 !207 !272 !273) -!275 = (!172 !186 !187 !206 !207 !272 !273) -!276 = span !0 415 419 -!277 = (!172 !186 !187 !206 !207 !272 !273 !276) -!278 = span !0 409 848 -!279 = (!172 !186 !187 !206 !207 !272 !273 !278) -!280 = (!172 !186 !187 !206 !207 !272 !273 !276) -!281 = (!172 !186 !187 !206 !207 !272 !273 !276) -!282 = (!172 !186 !187 !206 !207 !272 !273) -!283 = span !0 422 632 -!284 = fn_call_path_span !0 422 632 -!285 = (!172 !186 !187 !206 !207 !272 !273 !283 !284) -!286 = (!172 !186 !187 !206 !207 !272 !273 !283) -!287 = (!172 !186 !187 !206 !207 !216 !217 !226 !227) -!288 = (!172 !186 !187 !206 !207 !216 !217 !226 !227) -!289 = (!172 !186 !187 !206 !207 !216 !217 !226 !227) -!290 = (!172 !186 !187 !206 !207 !216 !217 !226 !227) -!291 = (!172 !186 !187 !206 !207 !272 !273 !276) -!292 = (!172 !186 !187 !206 !207 !272 !273) -!293 = (!172 !186 !187 !206 !207 !272 !273) -!294 = span !0 507 513 -!295 = (!172 !186 !187 !206 !207 !272 !273 !294) -!296 = span !0 491 495 -!297 = span !0 478 515 -!298 = (!172 !186 !187 !206 !207 !272 !273 !297) -!299 = span !0 570 576 -!300 = (!172 !186 !187 !206 !207 !272 !273 !299) -!301 = span !0 540 578 -!302 = (!172 !186 !187 !206 !207 !272 !273 !301) -!303 = span !0 603 609 -!304 = (!172 !186 !187 !206 !207 !272 !273 !303) -!305 = (!172 !186 !187 !206 !207 !272 !273) -!306 = (!172 !186 !187 !206 !207 !272 !273 !276) -!307 = (!172 !186 !187 !206 !207 !272 !273 !276) -!308 = (!172 !186 !187 !206 !207 !272 !273) -!309 = span !0 634 844 -!310 = fn_call_path_span !0 634 844 -!311 = (!172 !186 !187 !206 !207 !272 !273 !309 !310) -!312 = (!172 !186 !187 !206 !207 !272 !273 !309) -!313 = (!172 !186 !187 !206 !207 !272 !273 !276) -!314 = (!172 !186 !187 !206 !207 !272 !273) -!315 = (!172 !186 !187 !206 !207 !272 !273) -!316 = span !0 719 725 -!317 = (!172 !186 !187 !206 !207 !272 !273 !316) -!318 = span !0 703 707 -!319 = span !0 690 727 -!320 = (!172 !186 !187 !206 !207 !272 !273 !319) -!321 = span !0 782 788 -!322 = (!172 !186 !187 !206 !207 !272 !273 !321) -!323 = span !0 752 790 -!324 = (!172 !186 !187 !206 !207 !272 !273 !323) -!325 = span !0 815 821 -!326 = (!172 !186 !187 !206 !207 !272 !273 !325) -!327 = (!172 !186 !187 !206 !207 !272 !273) -!328 = (!172 !186 !187 !206 !207 !272 !273 !278) -!329 = span !0 396 849 -!330 = (!172 !186 !187 !206 !207 !272 !273 !329) -!331 = span !0 866 872 -!332 = (!172 !186 !187 !206 !207 !272 !273 !331) -!333 = span !4 8354 8393 -!334 = (!172 !186 !187 !206 !207 !333) -!335 = span !4 8402 8408 -!336 = (!172 !186 !187 !206 !207 !335) -!337 = span !4 7306 7341 -!338 = (!172 !186 !187 !337) -!339 = span !4 7360 7361 -!340 = span !4 7355 7361 -!341 = fn_call_path_span !4 7357 7359 -!342 = (!172 !186 !187 !340 !341) -!343 = (!172 !186 !187) -!344 = span !4 7383 7389 -!345 = (!172 !186 !187 !344) -!346 = span !4 56241 56288 -!347 = (!172 !346) -!348 = span !4 56297 56303 -!349 = (!172 !348) -!350 = span !4 56297 56318 -!351 = fn_call_path_span !4 56304 56316 -!352 = (!172 !350 !351) -!353 = span !4 766 770 -!354 = (!172 !350 !351 !353) -!355 = (!172 !350 !351 !234) -!356 = (!172 !350 !351) -!357 = (!172 !350 !351) -!358 = (!172 !350 !351) -!359 = (!172 !350 !351) -!360 = (!172 !350 !351) -!361 = (!172 !350 !351) -!362 = span !114 386 389 -!363 = span !114 390 391 -!364 = span !114 386 392 -!365 = span !114 393 394 -!366 = span !114 400 405 -!367 = "sway-lib-std/src/ops.sw" -!368 = span !367 12573 12578 -!369 = span !114 370 407 -!370 = fn_call_path_span !114 370 376 -!371 = "sway-lib-std/src/assert.sw" -!372 = span !371 1015 1025 -!373 = fn_call_path_span !371 1015 1016 -!374 = (!369 !370 !372 !373) -!375 = (!369 !370 !372) -!376 = span !371 1036 1064 -!377 = fn_call_path_span !371 1036 1042 -!378 = "sway-lib-std/src/revert.sw" -!379 = span !378 757 771 -!380 = (!369 !370 !376 !377 !379) -!381 = span !114 426 429 -!382 = span !114 430 431 -!383 = span !114 426 432 -!384 = span !114 433 434 -!385 = span !114 420 503 -!386 = span !114 426 434 -!387 = span !114 445 473 -!388 = fn_call_path_span !114 445 473 -!389 = (!387 !388) -!390 = span !114 507 511 -!391 = span !114 420 511 -!392 = fn_call_path_span !114 504 506 -!393 = (!391 !392) -!394 = span !114 413 512 -!395 = fn_call_path_span !114 413 419 -!396 = (!394 !395 !372 !373) -!397 = (!394 !395 !372) -!398 = (!394 !395 !376 !377 !379) -!399 = span !114 535 538 -!400 = span !114 539 540 -!401 = span !114 535 541 -!402 = span !114 542 543 -!403 = span !114 549 554 -!404 = span !114 519 556 -!405 = fn_call_path_span !114 519 525 -!406 = (!404 !405 !372 !373) -!407 = (!404 !405 !372) -!408 = (!404 !405 !376 !377 !379) -!409 = span !114 575 578 -!410 = span !114 579 580 -!411 = span !114 575 581 -!412 = span !114 582 583 -!413 = span !114 569 652 -!414 = span !114 575 583 -!415 = span !114 594 622 -!416 = fn_call_path_span !114 594 622 -!417 = (!415 !416) -!418 = span !114 494 495 -!419 = span !114 487 496 -!420 = fn_call_path_span !114 487 493 -!421 = (!419 !420 !379) -!422 = span !114 656 657 -!423 = span !114 569 657 -!424 = fn_call_path_span !114 653 655 -!425 = (!423 !424) -!426 = span !114 562 658 -!427 = fn_call_path_span !114 562 568 -!428 = (!426 !427 !372 !373) -!429 = (!426 !427 !372) -!430 = (!426 !427 !376 !377 !379) -!431 = span !114 665 693 -!432 = span !114 686 687 -!433 = span !114 643 644 -!434 = span !114 636 645 -!435 = fn_call_path_span !114 636 642 -!436 = (!434 !435 !379) -!437 = span !4 4896 4900 -!438 = span !4 4882 5027 -!439 = fn_name_span !4 4885 4895 -!440 = (!438 !439) -!441 = span !4 4938 5021 -!442 = span !4 4990 4996 -!443 = span !114 50 202 -!444 = fn_name_span !114 53 61 -!445 = (!443 !444) -!446 = span !114 107 117 -!447 = fn_call_path_span !114 109 115 -!448 = (!446 !447) -!449 = "sway-lib-std/src/str.sw" -!450 = span !449 153 157 -!451 = (!446 !447 !450) -!452 = span !449 131 201 -!453 = (!446 !447 !452) -!454 = (!446 !447 !452) -!455 = (!446 !447 !452) -!456 = span !114 130 131 -!457 = span !114 148 149 -!458 = span !114 123 200 -!459 = span !114 164 177 ->>>>>>> a94b693b4 (update tests) ;; ASM: Final program ;; Program kind: Script @@ -2150,7 +1227,6 @@ addi $r2 $$locbase i232 ; get offset to local __ptr { u64, ( u64 | u64 ) } mcpi $r2 $r1 i16 ; copy memory mcpi $r9 $r0 i8 ; copy memory addi $r0 $r9 i8 ; get offset to aggregate element -<<<<<<< HEAD mcpi $r0 $r2 i16 ; copy memory addi $r0 $$locbase i8 ; get offset to local __ptr { { string<3> }, { u64, ( u64 | u64 ) } } mcpi $r0 $r9 i24 ; copy memory @@ -2404,278 +1480,6 @@ cfsi i1312 ; [fn end: main_32] free: locals 1312 byte(s), cal move $$reta $r4 ; [fn end: main_32] restore return address poph i532479 ; [fn end: main_32]: restore used high registers 40..64 popl i8388608 ; [fn end: main_32]: restore used low registers 16..40 -======= -mcpi $r0 $r1 i16 ; copy memory -addi $r0 $$locbase i40 ; get offset to local __ptr { { string<3> }, { u64, ( u64 | u64 ) } } -mcpi $r0 $r9 i24 ; copy memory -mcpi $r7 $r0 i24 ; copy memory -addi $r2 $r2 i1 -jmpb $zero i87 -pshh i532472 ; [fn init: main_32]: push used high registers 40..64 -move $$locbase $sp ; [fn init: main_32]: set locals base register -cfei i1232 ; [fn init: main_32]: allocate: locals 1232 byte(s), call args 0 slot(s) -move $r4 $$arg1 ; [fn init: main_32]: copy argument 1 (__ret_value) -move $r3 $$reta ; [fn init: main_32]: save return address -addi $r0 $$locbase i1056 ; get offset to local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] -mcpi $r0 $$arg0 i48 ; copy memory -addi $r0 $$locbase i1056 ; get offset to local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] -addi $r1 $$locbase i464 ; get offset to local __ptr { { ptr, u64, u64 } } -movi $r2 i1024 ; initialize constant into register -aloc $r2 -addi $r2 $$locbase i128 ; get offset to local __ptr { ptr, u64, u64 } -sw $$locbase $hp i16 ; store word -movi $r5 i1024 ; initialize constant into register -sw $$locbase $r5 i17 ; store word -sw $$locbase $zero i18 ; store word -mcpi $$locbase $r2 i24 ; copy memory -mcpi $r1 $$locbase i24 ; copy memory -addi $r2 $$locbase i1160 ; get offset to local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] -mcpi $r2 $r0 i48 ; copy memory -addi $r0 $$locbase i720 ; get offset to local __ptr { { ptr, u64, u64 } } -mcpi $r0 $r1 i24 ; copy memory -addi $r0 $$locbase i720 ; get offset to local __ptr { { ptr, u64, u64 } } -addi $r1 $$locbase i840 ; get offset to local __ptr { { ptr, u64, u64 } } -mcpi $r1 $r0 i24 ; copy memory -movi $r9 i0 ; move parameter from branch to block argument -movi $r0 i2 ; initialize constant into register -lt $r0 $r9 $r0 -jnzf $r0 $zero i102 -addi $r0 $$locbase i840 ; get offset to local __ptr { { ptr, u64, u64 } } -addi $r1 $$locbase i696 ; get offset to local __ptr { { ptr, u64, u64 } } -mcpi $r1 $r0 i24 ; copy memory -addi $r0 $$locbase i696 ; get offset to local __ptr { { ptr, u64, u64 } } -addi $r1 $$locbase i1208 ; get offset to local __ptr { { ptr, u64, u64 } } -mcpi $r1 $r0 i24 ; copy memory -addi $r0 $$locbase i1208 ; get offset to local __ptr { { ptr, u64, u64 } } -addi $r1 $$locbase i72 ; get offset to local __ptr { ptr, u64, u64 } -mcpi $r1 $r0 i24 ; copy memory -addi $r0 $$locbase i176 ; get offset to local __ptr { ptr, u64, u64 } -mcpi $r0 $r1 i24 ; copy memory -addi $r1 $r0 i16 ; get offset to aggregate element -addi $r2 $$locbase i224 ; get offset to local __ptr { ptr, u64 } -mcpi $r2 $r0 i8 ; copy memory -addi $r0 $r2 i8 ; get offset to aggregate element -mcpi $r0 $r1 i8 ; copy memory -addi $r0 $$locbase i96 ; get offset to local __ptr slice -mcpi $r0 $r2 i16 ; copy memory -addi $r1 $$locbase i680 ; get offset to local __ptr slice -mcpi $r1 $r0 i16 ; copy memory -addi $r0 $$locbase i296 ; get offset to local __ptr slice -mcpi $r0 $r1 i16 ; copy memory -load $r0 data_NonConfigurable_0; load constant from data section -lw $r1 $$locbase i37 ; load slice pointer for logging data -lw $r2 $$locbase i38 ; load slice size for logging data -logd $zero $r0 $r1 $r2 ; log slice -addi $r0 $$locbase i1056 ; get offset to local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] -addr $r1 data_NonConfigurable_1; get __const_global's address in data section -addi $r2 $$locbase i112 ; get offset to local __ptr { ptr, u64 } -sw $$locbase $r1 i14 ; store word -movi $r1 i3 ; initialize constant into register -sw $$locbase $r1 i15 ; store word -addi $r1 $$locbase i200 ; get offset to local __ptr slice -mcpi $r1 $r2 i16 ; copy memory -addi $r2 $$locbase i608 ; get offset to local __ptr string<3> -mcpi $r2 $r0 i8 ; copy memory -addi $r0 $$locbase i616 ; get offset to local __ptr slice -mcpi $r0 $r1 i16 ; copy memory -move $$arg0 $r2 ; [call: eq_str_3_57]: pass argument 0 -move $$arg1 $r0 ; [call: eq_str_3_57]: pass argument 1 -jal $$reta $pc i232 ; [call: eq_str_3_57]: call function -eq $r0 $$retv $zero -jnzf $r0 $zero i56 -addi $r0 $$locbase i1056 ; get offset to local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] -addi $r0 $r0 i8 ; get offset to aggregate element -addi $r1 $$locbase i312 ; get offset to local __ptr { u64, ( u64 | u64 ) } -mcpi $r1 $r0 i16 ; copy memory -lw $r0 $$locbase i39 ; load word -eq $r0 $r0 $zero -jnzf $r0 $zero i1 -rvrt $one -lw $r0 $$locbase i40 ; load word -movi $r1 i1338 ; initialize constant into register -eq $r0 $r0 $r1 -eq $r0 $r0 $zero -jnzf $r0 $zero i41 -addi $r0 $$locbase i1056 ; get offset to local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] -addi $r0 $r0 i24 ; add array element offset to array base -addr $r1 data_NonConfigurable_2; get __const_global0's address in data section -addi $r2 $$locbase i240 ; get offset to local __ptr { ptr, u64 } -sw $$locbase $r1 i30 ; store word -movi $r1 i3 ; initialize constant into register -sw $$locbase $r1 i31 ; store word -addi $r1 $$locbase i280 ; get offset to local __ptr slice -mcpi $r1 $r2 i16 ; copy memory -addi $r2 $$locbase i632 ; get offset to local __ptr string<3> -mcpi $r2 $r0 i8 ; copy memory -addi $r0 $$locbase i640 ; get offset to local __ptr slice -mcpi $r0 $r1 i16 ; copy memory -move $$arg0 $r2 ; [call: eq_str_3_57]: pass argument 0 -move $$arg1 $r0 ; [call: eq_str_3_57]: pass argument 1 -jal $$reta $pc i200 ; [call: eq_str_3_57]: call function -eq $r0 $$retv $zero -jnzf $r0 $zero i20 -addi $r0 $$locbase i1056 ; get offset to local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] -addi $r0 $r0 i24 ; add array element offset to array base -addi $r0 $r0 i8 ; get offset to aggregate element -addi $r1 $$locbase i344 ; get offset to local __ptr { u64, ( u64 | u64 ) } -mcpi $r1 $r0 i16 ; copy memory -lw $r0 $$locbase i43 ; load word -eq $r0 $r0 $one -jnzf $r0 $zero i2 -movi $r0 i2 ; initialize constant into register -rvrt $r0 -lw $r0 $$locbase i44 ; load word -eq $r0 $r0 $one -eq $r0 $r0 $zero -jnzf $r0 $zero i4 -addi $r0 $$locbase i456 ; get offset to local __ptr { u64 } -sw $$locbase $one i57 ; store word -mcpi $r4 $r0 i8 ; copy memory -jmpf $zero i140 -load $r0 data_NonConfigurable_3; load constant from data section -rvrt $r0 -load $r0 data_NonConfigurable_3; load constant from data section -rvrt $r0 -load $r0 data_NonConfigurable_3; load constant from data section -rvrt $r0 -load $r0 data_NonConfigurable_3; load constant from data section -rvrt $r0 -addi $r0 $$locbase i1160 ; get offset to local __ptr [{ { string<3> }, { u64, ( u64 | u64 ) } }; 2] -muli $r1 $r9 i24 ; get offset to array element -add $r1 $r0 $r1 ; add array element offset to array base -addi $r0 $$locbase i840 ; get offset to local __ptr { { ptr, u64, u64 } } -addi $r2 $$locbase i1120 ; get offset to local __ptr { { string<3> }, { u64, ( u64 | u64 ) } } -mcpi $r2 $r1 i24 ; copy memory -addi $r1 $$locbase i744 ; get offset to local __ptr { { ptr, u64, u64 } } -mcpi $r1 $r0 i24 ; copy memory -addi $r0 $$locbase i1120 ; get offset to local __ptr { { string<3> }, { u64, ( u64 | u64 ) } } -addi $r1 $$locbase i744 ; get offset to local __ptr { { ptr, u64, u64 } } -addi $r2 $$locbase i1104 ; get offset to local __ptr { string<3> } -mcpi $r2 $r0 i8 ; copy memory -addi $r0 $$locbase i768 ; get offset to local __ptr { { ptr, u64, u64 } } -mcpi $r0 $r1 i24 ; copy memory -addi $r0 $$locbase i1104 ; get offset to local __ptr { string<3> } -addi $r1 $$locbase i768 ; get offset to local __ptr { { ptr, u64, u64 } } -addi $r2 $$locbase i1112 ; get offset to local __ptr string<3> -mcpi $r2 $r0 i8 ; copy memory -addi $r0 $$locbase i792 ; get offset to local __ptr { { ptr, u64, u64 } } -mcpi $r0 $r1 i24 ; copy memory -addi $r0 $$locbase i488 ; get offset to local __ptr { { ptr, u64, u64 } } -addi $r1 $$locbase i792 ; get offset to local __ptr { { ptr, u64, u64 } } -addi $r2 $$locbase i24 ; get offset to local __ptr { ptr, u64, u64 } -mcpi $r2 $r1 i24 ; copy memory -addi $r1 $$locbase i152 ; get offset to local __ptr { ptr, u64, u64 } -mcpi $r1 $r2 i24 ; copy memory -lw $r1 $$locbase i19 ; load word -lw $r8 $$locbase i20 ; load word -lw $r2 $$locbase i21 ; load word -addi $r5 $$locbase i1112 ; get offset to local __ptr string<3> -addi $r6 $r2 i3 -gt $r7 $r6 $r8 -jnzf $r7 $zero i1 -jmpf $zero i5 -muli $r7 $r8 i2 -addi $r8 $r7 i3 -aloc $r8 -mcp $hp $r1 $r2 -move $r1 $hp ; move parameter from branch to block argument -addi $r7 $$locbase i216 ; get offset to local __ptr string<3> -mcpi $r7 $r5 i8 ; copy memory -add $r2 $r1 $r2 -mcpi $r2 $r7 i3 ; copy memory -addi $r2 $$locbase i256 ; get offset to local __ptr { ptr, u64, u64 } -sw $$locbase $r1 i32 ; store word -sw $$locbase $r8 i33 ; store word -sw $$locbase $r6 i34 ; store word -addi $r1 $$locbase i48 ; get offset to local __ptr { ptr, u64, u64 } -mcpi $r1 $r2 i24 ; copy memory -mcpi $r0 $r1 i24 ; copy memory -addi $r1 $$locbase i888 ; get offset to local __ptr { { ptr, u64, u64 } } -mcpi $r1 $r0 i24 ; copy memory -addi $r0 $$locbase i888 ; get offset to local __ptr { { ptr, u64, u64 } } -addi $r1 $$locbase i864 ; get offset to local __ptr { { ptr, u64, u64 } } -mcpi $r1 $r0 i24 ; copy memory -addi $r0 $$locbase i1120 ; get offset to local __ptr { { string<3> }, { u64, ( u64 | u64 ) } } -addi $r0 $r0 i8 ; get offset to aggregate element -addi $r1 $$locbase i864 ; get offset to local __ptr { { ptr, u64, u64 } } -addi $r2 $$locbase i1144 ; get offset to local __ptr { u64, ( u64 | u64 ) } -mcpi $r2 $r0 i16 ; copy memory -addi $r0 $$locbase i816 ; get offset to local __ptr { { ptr, u64, u64 } } -mcpi $r0 $r1 i24 ; copy memory -addi $r0 $$locbase i1144 ; get offset to local __ptr { u64, ( u64 | u64 ) } -addi $r1 $$locbase i328 ; get offset to local __ptr { u64, ( u64 | u64 ) } -mcpi $r1 $r0 i16 ; copy memory -lw $r0 $$locbase i41 ; load word -eq $r0 $r0 $zero -jnzf $r0 $zero i30 -lw $r0 $$locbase i41 ; load word -eq $r0 $r0 $one -jnzf $r0 $zero i2 -load $r0 data_NonConfigurable_4; load constant from data section -rvrt $r0 -lw $r0 $$locbase i42 ; load word -addi $r1 $$locbase i816 ; get offset to local __ptr { { ptr, u64, u64 } } -addi $r2 $$locbase i560 ; get offset to local __ptr { { ptr, u64, u64 } } -mcpi $r2 $r1 i24 ; copy memory -addi $r1 $$locbase i408 ; get offset to local __ptr { { ptr, u64, u64 } } -movi $$arg0 i1 ; [call: abi_encode_51]: pass argument 0 -move $$arg1 $r2 ; [call: abi_encode_51]: pass argument 1 -move $$arg2 $r1 ; [call: abi_encode_51]: pass argument 2 -jal $$reta $pc i55 ; [call: abi_encode_51]: call function -addi $r2 $$locbase i984 ; get offset to local __ptr { { ptr, u64, u64 } } -mcpi $r2 $r1 i24 ; copy memory -addi $r1 $$locbase i984 ; get offset to local __ptr { { ptr, u64, u64 } } -addi $r2 $$locbase i584 ; get offset to local __ptr { { ptr, u64, u64 } } -mcpi $r2 $r1 i24 ; copy memory -addi $r1 $$locbase i432 ; get offset to local __ptr { { ptr, u64, u64 } } -move $$arg0 $r0 ; [call: abi_encode_51]: pass argument 0 -move $$arg1 $r2 ; [call: abi_encode_51]: pass argument 1 -move $$arg2 $r1 ; [call: abi_encode_51]: pass argument 2 -jal $$reta $pc i45 ; [call: abi_encode_51]: call function -addi $r0 $$locbase i1008 ; get offset to local __ptr { { ptr, u64, u64 } } -mcpi $r0 $r1 i24 ; copy memory -addi $r0 $$locbase i1008 ; get offset to local __ptr { { ptr, u64, u64 } } -addi $r1 $$locbase i656 ; get offset to local __ptr { { ptr, u64, u64 } } -mcpi $r1 $r0 i24 ; copy memory -jmpf $zero i24 -lw $r0 $$locbase i42 ; load word -addi $r1 $$locbase i816 ; get offset to local __ptr { { ptr, u64, u64 } } -addi $r2 $$locbase i512 ; get offset to local __ptr { { ptr, u64, u64 } } -mcpi $r2 $r1 i24 ; copy memory -addi $r1 $$locbase i360 ; get offset to local __ptr { { ptr, u64, u64 } } -movi $$arg0 i0 ; [call: abi_encode_51]: pass argument 0 -move $$arg1 $r2 ; [call: abi_encode_51]: pass argument 1 -move $$arg2 $r1 ; [call: abi_encode_51]: pass argument 2 -jal $$reta $pc i30 ; [call: abi_encode_51]: call function -addi $r2 $$locbase i912 ; get offset to local __ptr { { ptr, u64, u64 } } -mcpi $r2 $r1 i24 ; copy memory -addi $r1 $$locbase i912 ; get offset to local __ptr { { ptr, u64, u64 } } -addi $r2 $$locbase i536 ; get offset to local __ptr { { ptr, u64, u64 } } -mcpi $r2 $r1 i24 ; copy memory -addi $r1 $$locbase i384 ; get offset to local __ptr { { ptr, u64, u64 } } -move $$arg0 $r0 ; [call: abi_encode_51]: pass argument 0 -move $$arg1 $r2 ; [call: abi_encode_51]: pass argument 1 -move $$arg2 $r1 ; [call: abi_encode_51]: pass argument 2 -jal $$reta $pc i20 ; [call: abi_encode_51]: call function -addi $r0 $$locbase i960 ; get offset to local __ptr { { ptr, u64, u64 } } -mcpi $r0 $r1 i24 ; copy memory -addi $r0 $$locbase i960 ; get offset to local __ptr { { ptr, u64, u64 } } -addi $r1 $$locbase i656 ; get offset to local __ptr { { ptr, u64, u64 } } -mcpi $r1 $r0 i24 ; copy memory -addi $r0 $$locbase i1032 ; get offset to local __ptr { { ptr, u64, u64 } } -mcpi $r0 $r1 i24 ; copy memory -addi $r0 $$locbase i1032 ; get offset to local __ptr { { ptr, u64, u64 } } -addi $r1 $$locbase i936 ; get offset to local __ptr { { ptr, u64, u64 } } -mcpi $r1 $r0 i24 ; copy memory -addi $r0 $$locbase i936 ; get offset to local __ptr { { ptr, u64, u64 } } -addi $r1 $$locbase i840 ; get offset to local __ptr { { ptr, u64, u64 } } -mcpi $r1 $r0 i24 ; copy memory -addi $r9 $r9 i1 -jmpb $zero i235 -cfsi i1232 ; [fn end: main_32] free: locals 1232 byte(s), call args 0 slot(s) -move $$reta $r3 ; [fn end: main_32] restore return address -poph i532472 ; [fn end: main_32]: restore used high registers 40..64 ->>>>>>> a94b693b4 (update tests) jal $zero $$reta i0 ; [fn end: main_32] return from call pshh i532352 ; [fn init: abi_encode_51]: push used high registers 40..64 move $$locbase $sp ; [fn init: abi_encode_51]: set locals base register @@ -2732,7 +1536,6 @@ data_NonConfigurable_4 .word 14757395258967588866 0x00000028 GTF R52 $zero 0xa ;; [97, 208, 0, 10] 0x0000002c ADDI R51 R59 0xa8 ;; [80, 207, 176, 168] 0x00000030 SW R59 R52 0x15 ;; [95, 239, 64, 21] -<<<<<<< HEAD 0x00000034 ADDI R47 R59 0x1b8 ;; [80, 191, 177, 184] 0x00000038 MCPI R47 R51 0x8 ;; [96, 191, 48, 8] 0x0000003c ADDI R46 R59 0xf8 ;; [80, 187, 176, 248] @@ -3114,435 +1917,6 @@ data_NonConfigurable_4 .word 14757395258967588866 0x00000620 .bytes as hex ([61, 64, 64]), len i3, as ascii "add" 0x00000628 .word i18446744073709486084, as hex be bytes ([FF, FF, FF, FF, FF, FF, 00, 04]) 0x00000630 .word i14757395258967588866, as hex be bytes ([CC, CC, CC, CC, CC, CC, 00, 02]) -======= -0x00000034 ADDI R52 R59 0x1b8 ;; [80, 211, 177, 184] -0x00000038 MCPI R52 R51 0x8 ;; [96, 211, 48, 8] -0x0000003c ADDI R47 R59 0x1b8 ;; [80, 191, 177, 184] -0x00000040 ADDI R48 R59 0xf8 ;; [80, 195, 176, 248] -0x00000044 ADDI R52 R59 0x70 ;; [80, 211, 176, 112] -0x00000048 MCLI R52 0x30 ;; [112, 208, 0, 48] -0x0000004c ADDI R51 R59 0x188 ;; [80, 207, 177, 136] -0x00000050 MCPI R51 R52 0x30 ;; [96, 207, 64, 48] -0x00000054 ADDI R49 R59 0x188 ;; [80, 199, 177, 136] -0x00000058 MOVI R50 0x0 ;; [114, 200, 0, 0] -0x0000005c MOVI R52 0x2 ;; [114, 208, 0, 2] -0x00000060 LT R52 R50 R52 ;; [22, 211, 45, 0] -0x00000064 JNZF R52 $zero 0xf ;; [118, 208, 0, 15] -0x00000068 MCPI R48 R49 0x30 ;; [96, 195, 16, 48] -0x0000006c ADDI R52 R59 0x158 ;; [80, 211, 177, 88] -0x00000070 MCPI R52 R48 0x30 ;; [96, 211, 0, 48] -0x00000074 ADDI R52 R59 0x158 ;; [80, 211, 177, 88] -0x00000078 ADDI R51 R59 0xb8 ;; [80, 207, 176, 184] -0x0000007c MCPI R51 R52 0x30 ;; [96, 207, 64, 48] -0x00000080 ADDI R52 R59 0xa0 ;; [80, 211, 176, 160] -0x00000084 MOVE R58 R51 ;; [26, 235, 48, 0] -0x00000088 MOVE R57 R52 ;; [26, 231, 64, 0] -0x0000008c JAL R62 $pc 0x4d ;; [153, 248, 48, 77] -0x00000090 ADDI R51 R59 0x150 ;; [80, 207, 177, 80] -0x00000094 MCPI R51 R52 0x8 ;; [96, 207, 64, 8] -0x00000098 ADDI R52 R59 0x150 ;; [80, 211, 177, 80] -0x0000009c MOVI R51 0x8 ;; [114, 204, 0, 8] -0x000000a0 RETD R52 R51 ;; [37, 211, 48, 0] -0x000000a4 MULI R52 R50 0x18 ;; [85, 211, 32, 24] -0x000000a8 ADD R45 R49 R52 ;; [16, 183, 29, 0] -0x000000ac ADDI R43 R59 0x128 ;; [80, 175, 177, 40] -0x000000b0 ADDI R44 R59 0xb0 ;; [80, 179, 176, 176] -0x000000b4 ADDI R52 R59 0x140 ;; [80, 211, 177, 64] -0x000000b8 MCPI R52 R47 0x8 ;; [96, 210, 240, 8] -0x000000bc MOVI R51 0x3 ;; [114, 204, 0, 3] -0x000000c0 SW R59 R51 0x29 ;; [95, 239, 48, 41] -0x000000c4 MCPI R59 R52 0x10 ;; [96, 239, 64, 16] -0x000000c8 ADDI R52 R59 0x1e0 ;; [80, 211, 177, 224] -0x000000cc MCPI R52 R59 0x10 ;; [96, 211, 176, 16] -0x000000d0 LW R52 R47 0x0 ;; [93, 210, 240, 0] -0x000000d4 ADDI R52 R52 0x3 ;; [80, 211, 64, 3] -0x000000d8 SW R47 R52 0x0 ;; [95, 191, 64, 0] -0x000000dc ADDI R52 R59 0x1e0 ;; [80, 211, 177, 224] -0x000000e0 ADDI R51 R59 0x1c0 ;; [80, 207, 177, 192] -0x000000e4 MCPI R51 R52 0x10 ;; [96, 207, 64, 16] -0x000000e8 ADDI R52 R59 0x1c0 ;; [80, 211, 177, 192] -0x000000ec ADDI R51 R59 0x1d0 ;; [80, 207, 177, 208] -0x000000f0 MCPI R51 R52 0x10 ;; [96, 207, 64, 16] -0x000000f4 ADDI R52 R59 0x1d0 ;; [80, 211, 177, 208] -0x000000f8 ADDI R51 R59 0x1f0 ;; [80, 207, 177, 240] -0x000000fc MCPI R51 R52 0x10 ;; [96, 207, 64, 16] -0x00000100 ADDI R52 R59 0x1f0 ;; [80, 211, 177, 240] -0x00000104 ADDI R51 R59 0x10 ;; [80, 207, 176, 16] -0x00000108 MCPI R51 R52 0x10 ;; [96, 207, 64, 16] -0x0000010c ADDI R52 R59 0x40 ;; [80, 211, 176, 64] -0x00000110 MCPI R52 R51 0x10 ;; [96, 211, 48, 16] -0x00000114 LW R52 R59 0x8 ;; [93, 211, 176, 8] -0x00000118 ADDI R51 R59 0x20 ;; [80, 207, 176, 32] -0x0000011c MCPI R51 R52 0x8 ;; [96, 207, 64, 8] -0x00000120 MCPI R44 R51 0x8 ;; [96, 179, 48, 8] -0x00000124 LW R52 R47 0x0 ;; [93, 210, 240, 0] -0x00000128 LW R52 R52 0x0 ;; [93, 211, 64, 0] -0x0000012c LW R51 R47 0x0 ;; [93, 206, 240, 0] -0x00000130 ADDI R51 R51 0x8 ;; [80, 207, 48, 8] -0x00000134 SW R47 R51 0x0 ;; [95, 191, 48, 0] -0x00000138 EQ R51 R52 $zero ;; [19, 207, 64, 0] -0x0000013c JNZF R51 $zero 0xe ;; [118, 204, 0, 14] -0x00000140 EQ R52 R52 $one ;; [19, 211, 64, 64] -0x00000144 JNZF R52 $zero 0x1 ;; [118, 208, 0, 1] -0x00000148 RVRT $zero ;; [54, 0, 0, 0] -0x0000014c ADDI R52 R59 0x60 ;; [80, 211, 176, 96] -0x00000150 SW R59 $one 0xc ;; [95, 236, 16, 12] -0x00000154 LW R51 R47 0x0 ;; [93, 206, 240, 0] -0x00000158 LW R51 R51 0x0 ;; [93, 207, 48, 0] -0x0000015c LW R46 R47 0x0 ;; [93, 186, 240, 0] -0x00000160 ADDI R46 R46 0x8 ;; [80, 186, 224, 8] -0x00000164 SW R47 R46 0x0 ;; [95, 190, 224, 0] -0x00000168 SW R59 R51 0xd ;; [95, 239, 48, 13] -0x0000016c ADDI R51 R59 0xe8 ;; [80, 207, 176, 232] -0x00000170 MCPI R51 R52 0x10 ;; [96, 207, 64, 16] -0x00000174 JMPF $zero 0xa ;; [116, 0, 0, 10] -0x00000178 ADDI R52 R59 0x50 ;; [80, 211, 176, 80] -0x0000017c SW R59 $zero 0xa ;; [95, 236, 0, 10] -0x00000180 LW R51 R47 0x0 ;; [93, 206, 240, 0] -0x00000184 LW R51 R51 0x0 ;; [93, 207, 48, 0] -0x00000188 LW R46 R47 0x0 ;; [93, 186, 240, 0] -0x0000018c ADDI R46 R46 0x8 ;; [80, 186, 224, 8] -0x00000190 SW R47 R46 0x0 ;; [95, 190, 224, 0] -0x00000194 SW R59 R51 0xb ;; [95, 239, 48, 11] -0x00000198 ADDI R51 R59 0xe8 ;; [80, 207, 176, 232] -0x0000019c MCPI R51 R52 0x10 ;; [96, 207, 64, 16] -0x000001a0 MCPI R43 R44 0x8 ;; [96, 174, 192, 8] -0x000001a4 ADDI R52 R43 0x8 ;; [80, 210, 176, 8] -0x000001a8 MCPI R52 R51 0x10 ;; [96, 211, 48, 16] -0x000001ac ADDI R52 R59 0x28 ;; [80, 211, 176, 40] -0x000001b0 MCPI R52 R43 0x18 ;; [96, 210, 176, 24] -0x000001b4 MCPI R45 R52 0x18 ;; [96, 183, 64, 24] -0x000001b8 ADDI R50 R50 0x1 ;; [80, 203, 32, 1] -0x000001bc JMPB $zero 0x57 ;; [117, 0, 0, 87] -0x000001c0 PSHH 0x81ff8 ;; [150, 8, 31, 248] -0x000001c4 MOVE R59 $sp ;; [26, 236, 80, 0] -0x000001c8 CFEI 0x4d0 ;; [145, 0, 4, 208] -0x000001cc MOVE R48 R57 ;; [26, 195, 144, 0] -0x000001d0 MOVE R49 R62 ;; [26, 199, 224, 0] -0x000001d4 ADDI R52 R59 0x420 ;; [80, 211, 180, 32] -0x000001d8 MCPI R52 R58 0x30 ;; [96, 211, 160, 48] -0x000001dc ADDI R52 R59 0x420 ;; [80, 211, 180, 32] -0x000001e0 ADDI R51 R59 0x1d0 ;; [80, 207, 177, 208] -0x000001e4 MOVI R50 0x400 ;; [114, 200, 4, 0] -0x000001e8 ALOC R50 ;; [38, 200, 0, 0] -0x000001ec ADDI R50 R59 0x80 ;; [80, 203, 176, 128] -0x000001f0 SW R59 $hp 0x10 ;; [95, 236, 112, 16] -0x000001f4 MOVI R47 0x400 ;; [114, 188, 4, 0] -0x000001f8 SW R59 R47 0x11 ;; [95, 238, 240, 17] -0x000001fc SW R59 $zero 0x12 ;; [95, 236, 0, 18] -0x00000200 MCPI R59 R50 0x18 ;; [96, 239, 32, 24] -0x00000204 MCPI R51 R59 0x18 ;; [96, 207, 176, 24] -0x00000208 ADDI R50 R59 0x488 ;; [80, 203, 180, 136] -0x0000020c MCPI R50 R52 0x30 ;; [96, 203, 64, 48] -0x00000210 ADDI R52 R59 0x2d0 ;; [80, 211, 178, 208] -0x00000214 MCPI R52 R51 0x18 ;; [96, 211, 48, 24] -0x00000218 ADDI R52 R59 0x2d0 ;; [80, 211, 178, 208] -0x0000021c ADDI R51 R59 0x348 ;; [80, 207, 179, 72] -0x00000220 MCPI R51 R52 0x18 ;; [96, 207, 64, 24] -0x00000224 MOVI R43 0x0 ;; [114, 172, 0, 0] -0x00000228 MOVI R52 0x2 ;; [114, 208, 0, 2] -0x0000022c LT R52 R43 R52 ;; [22, 210, 189, 0] -0x00000230 JNZF R52 $zero 0x66 ;; [118, 208, 0, 102] -0x00000234 ADDI R52 R59 0x348 ;; [80, 211, 179, 72] -0x00000238 ADDI R51 R59 0x2b8 ;; [80, 207, 178, 184] -0x0000023c MCPI R51 R52 0x18 ;; [96, 207, 64, 24] -0x00000240 ADDI R52 R59 0x2b8 ;; [80, 211, 178, 184] -0x00000244 ADDI R51 R59 0x4b8 ;; [80, 207, 180, 184] -0x00000248 MCPI R51 R52 0x18 ;; [96, 207, 64, 24] -0x0000024c ADDI R52 R59 0x4b8 ;; [80, 211, 180, 184] -0x00000250 ADDI R51 R59 0x48 ;; [80, 207, 176, 72] -0x00000254 MCPI R51 R52 0x18 ;; [96, 207, 64, 24] -0x00000258 ADDI R52 R59 0xb0 ;; [80, 211, 176, 176] -0x0000025c MCPI R52 R51 0x18 ;; [96, 211, 48, 24] -0x00000260 ADDI R51 R52 0x10 ;; [80, 207, 64, 16] -0x00000264 ADDI R50 R59 0xe0 ;; [80, 203, 176, 224] -0x00000268 MCPI R50 R52 0x8 ;; [96, 203, 64, 8] -0x0000026c ADDI R52 R50 0x8 ;; [80, 211, 32, 8] -0x00000270 MCPI R52 R51 0x8 ;; [96, 211, 48, 8] -0x00000274 ADDI R52 R59 0x60 ;; [80, 211, 176, 96] -0x00000278 MCPI R52 R50 0x10 ;; [96, 211, 32, 16] -0x0000027c ADDI R51 R59 0x2a8 ;; [80, 207, 178, 168] -0x00000280 MCPI R51 R52 0x10 ;; [96, 207, 64, 16] -0x00000284 ADDI R52 R59 0x128 ;; [80, 211, 177, 40] -0x00000288 MCPI R52 R51 0x10 ;; [96, 211, 48, 16] -0x0000028c LW R52 R63 0x0 ;; [93, 211, 240, 0] -0x00000290 LW R51 R59 0x25 ;; [93, 207, 176, 37] -0x00000294 LW R50 R59 0x26 ;; [93, 203, 176, 38] -0x00000298 LOGD $zero R52 R51 R50 ;; [52, 3, 76, 242] -0x0000029c ADDI R52 R59 0x420 ;; [80, 211, 180, 32] -0x000002a0 MOVI R51 0x8 ;; [114, 204, 0, 8] -0x000002a4 ADD R51 R51 R63 ;; [16, 207, 63, 192] -0x000002a8 ADDI R50 R59 0x70 ;; [80, 203, 176, 112] -0x000002ac SW R59 R51 0xe ;; [95, 239, 48, 14] -0x000002b0 MOVI R51 0x3 ;; [114, 204, 0, 3] -0x000002b4 SW R59 R51 0xf ;; [95, 239, 48, 15] -0x000002b8 ADDI R51 R59 0xc8 ;; [80, 207, 176, 200] -0x000002bc MCPI R51 R50 0x10 ;; [96, 207, 32, 16] -0x000002c0 ADDI R50 R59 0x260 ;; [80, 203, 178, 96] -0x000002c4 MCPI R50 R52 0x8 ;; [96, 203, 64, 8] -0x000002c8 ADDI R52 R59 0x268 ;; [80, 211, 178, 104] -0x000002cc MCPI R52 R51 0x10 ;; [96, 211, 48, 16] -0x000002d0 MOVE R58 R50 ;; [26, 235, 32, 0] -0x000002d4 MOVE R57 R52 ;; [26, 231, 64, 0] -0x000002d8 JAL R62 $pc 0xe8 ;; [153, 248, 48, 232] -0x000002dc EQ R52 R61 $zero ;; [19, 211, 208, 0] -0x000002e0 JNZF R52 $zero 0x38 ;; [118, 208, 0, 56] -0x000002e4 ADDI R52 R59 0x420 ;; [80, 211, 180, 32] -0x000002e8 ADDI R52 R52 0x8 ;; [80, 211, 64, 8] -0x000002ec ADDI R51 R59 0x138 ;; [80, 207, 177, 56] -0x000002f0 MCPI R51 R52 0x10 ;; [96, 207, 64, 16] -0x000002f4 LW R52 R59 0x27 ;; [93, 211, 176, 39] -0x000002f8 EQ R52 R52 $zero ;; [19, 211, 64, 0] -0x000002fc JNZF R52 $zero 0x1 ;; [118, 208, 0, 1] -0x00000300 RVRT $one ;; [54, 4, 0, 0] -0x00000304 LW R52 R59 0x28 ;; [93, 211, 176, 40] -0x00000308 MOVI R51 0x53a ;; [114, 204, 5, 58] -0x0000030c EQ R52 R52 R51 ;; [19, 211, 76, 192] -0x00000310 EQ R52 R52 $zero ;; [19, 211, 64, 0] -0x00000314 JNZF R52 $zero 0x29 ;; [118, 208, 0, 41] -0x00000318 ADDI R52 R59 0x420 ;; [80, 211, 180, 32] -0x0000031c ADDI R52 R52 0x18 ;; [80, 211, 64, 24] -0x00000320 MOVI R51 0x10 ;; [114, 204, 0, 16] -0x00000324 ADD R51 R51 R63 ;; [16, 207, 63, 192] -0x00000328 ADDI R50 R59 0xf0 ;; [80, 203, 176, 240] -0x0000032c SW R59 R51 0x1e ;; [95, 239, 48, 30] -0x00000330 MOVI R51 0x3 ;; [114, 204, 0, 3] -0x00000334 SW R59 R51 0x1f ;; [95, 239, 48, 31] -0x00000338 ADDI R51 R59 0x118 ;; [80, 207, 177, 24] -0x0000033c MCPI R51 R50 0x10 ;; [96, 207, 32, 16] -0x00000340 ADDI R50 R59 0x278 ;; [80, 203, 178, 120] -0x00000344 MCPI R50 R52 0x8 ;; [96, 203, 64, 8] -0x00000348 ADDI R52 R59 0x280 ;; [80, 211, 178, 128] -0x0000034c MCPI R52 R51 0x10 ;; [96, 211, 48, 16] -0x00000350 MOVE R58 R50 ;; [26, 235, 32, 0] -0x00000354 MOVE R57 R52 ;; [26, 231, 64, 0] -0x00000358 JAL R62 $pc 0xc8 ;; [153, 248, 48, 200] -0x0000035c EQ R52 R61 $zero ;; [19, 211, 208, 0] -0x00000360 JNZF R52 $zero 0x14 ;; [118, 208, 0, 20] -0x00000364 ADDI R52 R59 0x420 ;; [80, 211, 180, 32] -0x00000368 ADDI R52 R52 0x18 ;; [80, 211, 64, 24] -0x0000036c ADDI R52 R52 0x8 ;; [80, 211, 64, 8] -0x00000370 ADDI R51 R59 0x158 ;; [80, 207, 177, 88] -0x00000374 MCPI R51 R52 0x10 ;; [96, 207, 64, 16] -0x00000378 LW R52 R59 0x2b ;; [93, 211, 176, 43] -0x0000037c EQ R52 R52 $one ;; [19, 211, 64, 64] -0x00000380 JNZF R52 $zero 0x2 ;; [118, 208, 0, 2] -0x00000384 MOVI R52 0x2 ;; [114, 208, 0, 2] -0x00000388 RVRT R52 ;; [54, 208, 0, 0] -0x0000038c LW R52 R59 0x2c ;; [93, 211, 176, 44] -0x00000390 EQ R52 R52 $one ;; [19, 211, 64, 64] -0x00000394 EQ R52 R52 $zero ;; [19, 211, 64, 0] -0x00000398 JNZF R52 $zero 0x4 ;; [118, 208, 0, 4] -0x0000039c ADDI R52 R59 0x1c8 ;; [80, 211, 177, 200] -0x000003a0 SW R59 $one 0x39 ;; [95, 236, 16, 57] -0x000003a4 MCPI R48 R52 0x8 ;; [96, 195, 64, 8] -0x000003a8 JMPF $zero 0x8c ;; [116, 0, 0, 140] -0x000003ac LW R52 R63 0x3 ;; [93, 211, 240, 3] -0x000003b0 RVRT R52 ;; [54, 208, 0, 0] -0x000003b4 LW R52 R63 0x3 ;; [93, 211, 240, 3] -0x000003b8 RVRT R52 ;; [54, 208, 0, 0] -0x000003bc LW R52 R63 0x3 ;; [93, 211, 240, 3] -0x000003c0 RVRT R52 ;; [54, 208, 0, 0] -0x000003c4 LW R52 R63 0x3 ;; [93, 211, 240, 3] -0x000003c8 RVRT R52 ;; [54, 208, 0, 0] -0x000003cc ADDI R52 R59 0x488 ;; [80, 211, 180, 136] -0x000003d0 MULI R51 R43 0x18 ;; [85, 206, 176, 24] -0x000003d4 ADD R51 R52 R51 ;; [16, 207, 76, 192] -0x000003d8 ADDI R52 R59 0x348 ;; [80, 211, 179, 72] -0x000003dc ADDI R50 R59 0x460 ;; [80, 203, 180, 96] -0x000003e0 MCPI R50 R51 0x18 ;; [96, 203, 48, 24] -0x000003e4 ADDI R51 R59 0x2e8 ;; [80, 207, 178, 232] -0x000003e8 MCPI R51 R52 0x18 ;; [96, 207, 64, 24] -0x000003ec ADDI R52 R59 0x460 ;; [80, 211, 180, 96] -0x000003f0 ADDI R51 R59 0x2e8 ;; [80, 207, 178, 232] -0x000003f4 ADDI R50 R59 0x450 ;; [80, 203, 180, 80] -0x000003f8 MCPI R50 R52 0x8 ;; [96, 203, 64, 8] -0x000003fc ADDI R52 R59 0x300 ;; [80, 211, 179, 0] -0x00000400 MCPI R52 R51 0x18 ;; [96, 211, 48, 24] -0x00000404 ADDI R52 R59 0x450 ;; [80, 211, 180, 80] -0x00000408 ADDI R51 R59 0x300 ;; [80, 207, 179, 0] -0x0000040c ADDI R50 R59 0x458 ;; [80, 203, 180, 88] -0x00000410 MCPI R50 R52 0x8 ;; [96, 203, 64, 8] -0x00000414 ADDI R52 R59 0x318 ;; [80, 211, 179, 24] -0x00000418 MCPI R52 R51 0x18 ;; [96, 211, 48, 24] -0x0000041c ADDI R52 R59 0x1e8 ;; [80, 211, 177, 232] -0x00000420 ADDI R51 R59 0x318 ;; [80, 207, 179, 24] -0x00000424 ADDI R50 R59 0x18 ;; [80, 203, 176, 24] -0x00000428 MCPI R50 R51 0x18 ;; [96, 203, 48, 24] -0x0000042c ADDI R51 R59 0x98 ;; [80, 207, 176, 152] -0x00000430 MCPI R51 R50 0x18 ;; [96, 207, 32, 24] -0x00000434 LW R51 R59 0x13 ;; [93, 207, 176, 19] -0x00000438 LW R44 R59 0x14 ;; [93, 179, 176, 20] -0x0000043c LW R50 R59 0x15 ;; [93, 203, 176, 21] -0x00000440 ADDI R47 R59 0x458 ;; [80, 191, 180, 88] -0x00000444 ADDI R46 R50 0x3 ;; [80, 187, 32, 3] -0x00000448 GT R45 R46 R44 ;; [21, 182, 235, 0] -0x0000044c JNZF R45 $zero 0x1 ;; [118, 180, 0, 1] -0x00000450 JMPF $zero 0x5 ;; [116, 0, 0, 5] -0x00000454 MULI R45 R44 0x2 ;; [85, 182, 192, 2] -0x00000458 ADDI R44 R45 0x3 ;; [80, 178, 208, 3] -0x0000045c ALOC R44 ;; [38, 176, 0, 0] -0x00000460 MCP $hp R51 R50 ;; [40, 31, 60, 128] -0x00000464 MOVE R51 $hp ;; [26, 204, 112, 0] -0x00000468 ADDI R45 R59 0xd8 ;; [80, 183, 176, 216] -0x0000046c MCPI R45 R47 0x8 ;; [96, 182, 240, 8] -0x00000470 ADD R50 R51 R50 ;; [16, 203, 60, 128] -0x00000474 MCPI R50 R45 0x3 ;; [96, 202, 208, 3] -0x00000478 ADDI R50 R59 0x100 ;; [80, 203, 177, 0] -0x0000047c SW R59 R51 0x20 ;; [95, 239, 48, 32] -0x00000480 SW R59 R44 0x21 ;; [95, 238, 192, 33] -0x00000484 SW R59 R46 0x22 ;; [95, 238, 224, 34] -0x00000488 ADDI R51 R59 0x30 ;; [80, 207, 176, 48] -0x0000048c MCPI R51 R50 0x18 ;; [96, 207, 32, 24] -0x00000490 MCPI R52 R51 0x18 ;; [96, 211, 48, 24] -0x00000494 ADDI R51 R59 0x378 ;; [80, 207, 179, 120] -0x00000498 MCPI R51 R52 0x18 ;; [96, 207, 64, 24] -0x0000049c ADDI R52 R59 0x378 ;; [80, 211, 179, 120] -0x000004a0 ADDI R51 R59 0x360 ;; [80, 207, 179, 96] -0x000004a4 MCPI R51 R52 0x18 ;; [96, 207, 64, 24] -0x000004a8 ADDI R52 R59 0x460 ;; [80, 211, 180, 96] -0x000004ac ADDI R52 R52 0x8 ;; [80, 211, 64, 8] -0x000004b0 ADDI R51 R59 0x360 ;; [80, 207, 179, 96] -0x000004b4 ADDI R50 R59 0x478 ;; [80, 203, 180, 120] -0x000004b8 MCPI R50 R52 0x10 ;; [96, 203, 64, 16] -0x000004bc ADDI R52 R59 0x330 ;; [80, 211, 179, 48] -0x000004c0 MCPI R52 R51 0x18 ;; [96, 211, 48, 24] -0x000004c4 ADDI R52 R59 0x478 ;; [80, 211, 180, 120] -0x000004c8 ADDI R51 R59 0x148 ;; [80, 207, 177, 72] -0x000004cc MCPI R51 R52 0x10 ;; [96, 207, 64, 16] -0x000004d0 LW R52 R59 0x29 ;; [93, 211, 176, 41] -0x000004d4 EQ R52 R52 $zero ;; [19, 211, 64, 0] -0x000004d8 JNZF R52 $zero 0x1e ;; [118, 208, 0, 30] -0x000004dc LW R52 R59 0x29 ;; [93, 211, 176, 41] -0x000004e0 EQ R52 R52 $one ;; [19, 211, 64, 64] -0x000004e4 JNZF R52 $zero 0x2 ;; [118, 208, 0, 2] -0x000004e8 LW R52 R63 0x4 ;; [93, 211, 240, 4] -0x000004ec RVRT R52 ;; [54, 208, 0, 0] -0x000004f0 LW R52 R59 0x2a ;; [93, 211, 176, 42] -0x000004f4 ADDI R51 R59 0x330 ;; [80, 207, 179, 48] -0x000004f8 ADDI R50 R59 0x230 ;; [80, 203, 178, 48] -0x000004fc MCPI R50 R51 0x18 ;; [96, 203, 48, 24] -0x00000500 ADDI R51 R59 0x198 ;; [80, 207, 177, 152] -0x00000504 MOVI R58 0x1 ;; [114, 232, 0, 1] -0x00000508 MOVE R57 R50 ;; [26, 231, 32, 0] -0x0000050c MOVE R56 R51 ;; [26, 227, 48, 0] -0x00000510 JAL R62 $pc 0x37 ;; [153, 248, 48, 55] -0x00000514 ADDI R50 R59 0x3d8 ;; [80, 203, 179, 216] -0x00000518 MCPI R50 R51 0x18 ;; [96, 203, 48, 24] -0x0000051c ADDI R51 R59 0x3d8 ;; [80, 207, 179, 216] -0x00000520 ADDI R50 R59 0x248 ;; [80, 203, 178, 72] -0x00000524 MCPI R50 R51 0x18 ;; [96, 203, 48, 24] -0x00000528 ADDI R51 R59 0x1b0 ;; [80, 207, 177, 176] -0x0000052c MOVE R58 R52 ;; [26, 235, 64, 0] -0x00000530 MOVE R57 R50 ;; [26, 231, 32, 0] -0x00000534 MOVE R56 R51 ;; [26, 227, 48, 0] -0x00000538 JAL R62 $pc 0x2d ;; [153, 248, 48, 45] -0x0000053c ADDI R52 R59 0x3f0 ;; [80, 211, 179, 240] -0x00000540 MCPI R52 R51 0x18 ;; [96, 211, 48, 24] -0x00000544 ADDI R52 R59 0x3f0 ;; [80, 211, 179, 240] -0x00000548 ADDI R51 R59 0x290 ;; [80, 207, 178, 144] -0x0000054c MCPI R51 R52 0x18 ;; [96, 207, 64, 24] -0x00000550 JMPF $zero 0x18 ;; [116, 0, 0, 24] -0x00000554 LW R52 R59 0x2a ;; [93, 211, 176, 42] -0x00000558 ADDI R51 R59 0x330 ;; [80, 207, 179, 48] -0x0000055c ADDI R50 R59 0x200 ;; [80, 203, 178, 0] -0x00000560 MCPI R50 R51 0x18 ;; [96, 203, 48, 24] -0x00000564 ADDI R51 R59 0x168 ;; [80, 207, 177, 104] -0x00000568 MOVI R58 0x0 ;; [114, 232, 0, 0] -0x0000056c MOVE R57 R50 ;; [26, 231, 32, 0] -0x00000570 MOVE R56 R51 ;; [26, 227, 48, 0] -0x00000574 JAL R62 $pc 0x1e ;; [153, 248, 48, 30] -0x00000578 ADDI R50 R59 0x390 ;; [80, 203, 179, 144] -0x0000057c MCPI R50 R51 0x18 ;; [96, 203, 48, 24] -0x00000580 ADDI R51 R59 0x390 ;; [80, 207, 179, 144] -0x00000584 ADDI R50 R59 0x218 ;; [80, 203, 178, 24] -0x00000588 MCPI R50 R51 0x18 ;; [96, 203, 48, 24] -0x0000058c ADDI R51 R59 0x180 ;; [80, 207, 177, 128] -0x00000590 MOVE R58 R52 ;; [26, 235, 64, 0] -0x00000594 MOVE R57 R50 ;; [26, 231, 32, 0] -0x00000598 MOVE R56 R51 ;; [26, 227, 48, 0] -0x0000059c JAL R62 $pc 0x14 ;; [153, 248, 48, 20] -0x000005a0 ADDI R52 R59 0x3c0 ;; [80, 211, 179, 192] -0x000005a4 MCPI R52 R51 0x18 ;; [96, 211, 48, 24] -0x000005a8 ADDI R52 R59 0x3c0 ;; [80, 211, 179, 192] -0x000005ac ADDI R51 R59 0x290 ;; [80, 207, 178, 144] -0x000005b0 MCPI R51 R52 0x18 ;; [96, 207, 64, 24] -0x000005b4 ADDI R52 R59 0x408 ;; [80, 211, 180, 8] -0x000005b8 MCPI R52 R51 0x18 ;; [96, 211, 48, 24] -0x000005bc ADDI R52 R59 0x408 ;; [80, 211, 180, 8] -0x000005c0 ADDI R51 R59 0x3a8 ;; [80, 207, 179, 168] -0x000005c4 MCPI R51 R52 0x18 ;; [96, 207, 64, 24] -0x000005c8 ADDI R52 R59 0x3a8 ;; [80, 211, 179, 168] -0x000005cc ADDI R51 R59 0x348 ;; [80, 207, 179, 72] -0x000005d0 MCPI R51 R52 0x18 ;; [96, 207, 64, 24] -0x000005d4 ADDI R43 R43 0x1 ;; [80, 174, 176, 1] -0x000005d8 JMPB $zero 0xeb ;; [117, 0, 0, 235] -0x000005dc CFSI 0x4d0 ;; [146, 0, 4, 208] -0x000005e0 MOVE R62 R49 ;; [26, 251, 16, 0] -0x000005e4 POPH 0x81ff8 ;; [152, 8, 31, 248] -0x000005e8 JAL $zero R62 0x0 ;; [153, 3, 224, 0] -0x000005ec PSHH 0x81f80 ;; [150, 8, 31, 128] -0x000005f0 MOVE R59 $sp ;; [26, 236, 80, 0] -0x000005f4 CFEI 0x90 ;; [145, 0, 0, 144] -0x000005f8 ADDI R52 R59 0x78 ;; [80, 211, 176, 120] -0x000005fc MCPI R52 R57 0x18 ;; [96, 211, 144, 24] -0x00000600 ADDI R52 R59 0x60 ;; [80, 211, 176, 96] -0x00000604 ADDI R51 R59 0x78 ;; [80, 207, 176, 120] -0x00000608 MCPI R59 R51 0x18 ;; [96, 239, 48, 24] -0x0000060c ADDI R51 R59 0x30 ;; [80, 207, 176, 48] -0x00000610 MCPI R51 R59 0x18 ;; [96, 207, 176, 24] -0x00000614 LW R51 R59 0x6 ;; [93, 207, 176, 6] -0x00000618 LW R47 R59 0x7 ;; [93, 191, 176, 7] -0x0000061c LW R50 R59 0x8 ;; [93, 203, 176, 8] -0x00000620 ADDI R49 R50 0x8 ;; [80, 199, 32, 8] -0x00000624 GT R48 R49 R47 ;; [21, 195, 27, 192] -0x00000628 JNZF R48 $zero 0x1 ;; [118, 192, 0, 1] -0x0000062c JMPF $zero 0x5 ;; [116, 0, 0, 5] -0x00000630 MULI R48 R47 0x2 ;; [85, 194, 240, 2] -0x00000634 ADDI R47 R48 0x8 ;; [80, 191, 0, 8] -0x00000638 ALOC R47 ;; [38, 188, 0, 0] -0x0000063c MCP $hp R51 R50 ;; [40, 31, 60, 128] -0x00000640 MOVE R51 $hp ;; [26, 204, 112, 0] -0x00000644 ADD R50 R51 R50 ;; [16, 203, 60, 128] -0x00000648 SW R50 R58 0x0 ;; [95, 203, 160, 0] -0x0000064c ADDI R50 R59 0x48 ;; [80, 203, 176, 72] -0x00000650 SW R59 R51 0x9 ;; [95, 239, 48, 9] -0x00000654 SW R59 R47 0xa ;; [95, 238, 240, 10] -0x00000658 SW R59 R49 0xb ;; [95, 239, 16, 11] -0x0000065c ADDI R51 R59 0x18 ;; [80, 207, 176, 24] -0x00000660 MCPI R51 R50 0x18 ;; [96, 207, 32, 24] -0x00000664 MCPI R52 R51 0x18 ;; [96, 211, 48, 24] -0x00000668 MCPI R56 R52 0x18 ;; [96, 227, 64, 24] -0x0000066c CFSI 0x90 ;; [146, 0, 0, 144] -0x00000670 POPH 0x81f80 ;; [152, 8, 31, 128] -0x00000674 JAL $zero R62 0x0 ;; [153, 3, 224, 0] -0x00000678 PSHH 0x81c00 ;; [150, 8, 28, 0] -0x0000067c MOVE R59 $sp ;; [26, 236, 80, 0] -0x00000680 CFEI 0x28 ;; [145, 0, 0, 40] -0x00000684 ADDI R52 R59 0x10 ;; [80, 211, 176, 16] -0x00000688 MCPI R52 R58 0x8 ;; [96, 211, 160, 8] -0x0000068c ADDI R52 R59 0x18 ;; [80, 211, 176, 24] -0x00000690 MCPI R52 R57 0x10 ;; [96, 211, 144, 16] -0x00000694 LW R52 R59 0x3 ;; [93, 211, 176, 3] -0x00000698 LW R51 R59 0x4 ;; [93, 207, 176, 4] -0x0000069c SW R59 R52 0x0 ;; [95, 239, 64, 0] -0x000006a0 SW R59 R51 0x1 ;; [95, 239, 48, 1] -0x000006a4 LW R52 R59 0x0 ;; [93, 211, 176, 0] -0x000006a8 ADDI R51 R59 0x10 ;; [80, 207, 176, 16] -0x000006ac MOVI R50 0x3 ;; [114, 200, 0, 3] -0x000006b0 MEQ R52 R51 R52 R50 ;; [41, 211, 61, 50] -0x000006b4 MOVE R61 R52 ;; [26, 247, 64, 0] -0x000006b8 CFSI 0x28 ;; [146, 0, 0, 40] -0x000006bc POPH 0x81c00 ;; [152, 8, 28, 0] -0x000006c0 JAL $zero R62 0x0 ;; [153, 3, 224, 0] -0x000006c4 NOOP ;; [71, 0, 0, 0] -.data_section: -0x000006c8 .word i3647243719605075626, as hex be bytes ([32, 9D, 9C, D6, CC, 55, BE, AA]) -0x000006d0 .bytes as hex ([73, 65, 74]), len i3, as ascii "set" -0x000006d8 .bytes as hex ([61, 64, 64]), len i3, as ascii "add" -0x000006e0 .word i18446744073709486084, as hex be bytes ([FF, FF, FF, FF, FF, FF, 00, 04]) -0x000006e8 .word i14757395258967588866, as hex be bytes ([CC, CC, CC, CC, CC, CC, 00, 02]) ->>>>>>> a94b693b4 (update tests) ;; --- END OF TARGET BYTECODE --- Finished release [optimized + fuel] target(s) [1.592 KB] in ??? diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/match_expressions_all/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/match_expressions_all/stdout.snap index 666a75f76aa..85e9ff170da 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/match_expressions_all/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/match_expressions_all/stdout.snap @@ -7,11 +7,7 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/language/match_expressions_all Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-assert) Compiling script match_expressions_all (test/src/e2e_vm_tests/test_programs/should_pass/language/match_expressions_all) -<<<<<<< HEAD Finished debug [unoptimized + fuel] target(s) [2.84 KB] in ??? -======= - Finished debug [unoptimized + fuel] target(s) [2.904 KB] in ??? ->>>>>>> a94b693b4 (update tests) > forc build --path test/src/e2e_vm_tests/test_programs/should_pass/language/match_expressions_all --ir final --asm final --release | filter-fn match_expressions_all return_match_on_str_slice @@ -24,7 +20,6 @@ fn return_match_on_str_slice_8(mut param: __ptr slice) -> u64 { local slice __anon_5 local slice __matched_value_1 -<<<<<<< HEAD entry(mut param: __ptr slice): v263v1 = get_local __ptr slice, __matched_value_1 mem_copy_val v263v1, param @@ -90,78 +85,6 @@ fn return_match_on_str_slice_8(mut param: __ptr slice) -> u64 { block8(mut v262v1: u64): ret u64 v262v1 -======= - entry(param: __ptr slice): - v284v1 = get_local __ptr slice, __matched_value_1 - mem_copy_val v284v1, param - v286v1 = get_global __ptr string<5>, __const_global - v287v1 = cast_ptr v286v1 to ptr - v288v1 = get_local __ptr { ptr, u64 }, __anon_0 - v289v1 = const u64 0 - v290v1 = get_elem_ptr v288v1, __ptr ptr, v289v1 - store v287v1 to v290v1 - v292v1 = const u64 1 - v293v1 = get_elem_ptr v288v1, __ptr u64, v292v1 - v294v1 = const u64 5 - store v294v1 to v293v1 - v296v1 = get_local __ptr slice, __anon_1 - mem_copy_bytes v296v1, v288v1, 16 - v298v1 = get_local __ptr slice, __anon_1 - v299v1 = call eq_9(param, v298v1) - v300v1 = const u64 1 - cbr v299v1, block8(v300v1), block1() - - block1(): - v302v1 = get_local __ptr slice, __matched_value_1 - v303v1 = get_global __ptr string<7>, __const_global0 - v304v1 = cast_ptr v303v1 to ptr - v305v1 = get_local __ptr { ptr, u64 }, __anon_2 - v306v1 = const u64 0 - v307v1 = get_elem_ptr v305v1, __ptr ptr, v306v1 - store v304v1 to v307v1 - v309v1 = const u64 1 - v310v1 = get_elem_ptr v305v1, __ptr u64, v309v1 - v311v1 = const u64 7 - store v311v1 to v310v1 - v313v1 = get_local __ptr slice, __anon_3 - mem_copy_bytes v313v1, v305v1, 16 - v315v1 = get_local __ptr slice, __anon_3 - v316v1 = call eq_9(v302v1, v315v1) - v317v1 = const u64 2 - cbr v316v1, block7(v317v1), block3() - - block3(): - v319v1 = get_local __ptr slice, __matched_value_1 - v320v1 = get_global __ptr string<5>, __const_global1 - v321v1 = cast_ptr v320v1 to ptr - v322v1 = get_local __ptr { ptr, u64 }, __anon_4 - v323v1 = const u64 0 - v324v1 = get_elem_ptr v322v1, __ptr ptr, v323v1 - store v321v1 to v324v1 - v326v1 = const u64 1 - v327v1 = get_elem_ptr v322v1, __ptr u64, v326v1 - v328v1 = const u64 5 - store v328v1 to v327v1 - v330v1 = get_local __ptr slice, __anon_5 - mem_copy_bytes v330v1, v322v1, 16 - v332v1 = get_local __ptr slice, __anon_5 - v333v1 = call eq_9(v319v1, v332v1) - v334v1 = const u64 3 - cbr v333v1, block6(v334v1), block5() - - block5(): - v336v1 = const u64 1000 - br block6(v336v1) - - block6(v281v1: u64): - br block7(v281v1) - - block7(v282v1: u64): - br block8(v282v1) - - block8(v283v1: u64): - ret u64 v283v1 ->>>>>>> a94b693b4 (update tests) } diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panic_handling_in_unit_tests/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panic_handling_in_unit_tests/stdout.snap index 7cf0438a03e..6b09427aacc 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panic_handling_in_unit_tests/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panic_handling_in_unit_tests/stdout.snap @@ -23,11 +23,7 @@ ____ tested -- panic_handling_in_unit_tests -<<<<<<< HEAD test passing_dbgs_and_logs ... ok (???, 2697 gas) -======= - test passing_dbgs_and_logs ... ok (???, 2932 gas) ->>>>>>> a94b693b4 (update tests) debug output: [src/main.sw:23:13] "This is a passing test containing `__dbg` outputs." = "This is a passing test containing `__dbg` outputs." [src/main.sw:25:13] x = 42 @@ -35,11 +31,7 @@ tested -- panic_handling_in_unit_tests AsciiString { data: "This is a log from the passing test." }, log rb: 10098701174489624218 42, log rb: 1515152261580153489 raw logs: -<<<<<<< HEAD [{"LogData":{"data":"0000000000000024546869732069732061206c6f672066726f6d207468652070617373696e6720746573742e","digest":"29d742ad9093cdf81404ff756467a44448729b85ab3c0d65197829fb61d2dd29","id":"0000000000000000000000000000000000000000000000000000000000000000","is":10368,"len":44,"pc":10832,"ptr":67107840,"ra":0,"rb":10098701174489624218}},{"LogData":{"data":"000000000000002a","digest":"a6bb133cb1e3638ad7b8a3ff0539668e9e56f9b850ef1b2a810f5422eaa6c323","id":"0000000000000000000000000000000000000000000000000000000000000000","is":10368,"len":8,"pc":15456,"ptr":19056,"ra":0,"rb":1515152261580153489}}] -======= -[{"LogData":{"data":"0000000000000024546869732069732061206c6f672066726f6d207468652070617373696e6720746573742e","digest":"29d742ad9093cdf81404ff756467a44448729b85ab3c0d65197829fb61d2dd29","id":"0000000000000000000000000000000000000000000000000000000000000000","is":10368,"len":44,"pc":10832,"ptr":67107840,"ra":0,"rb":10098701174489624218}},{"LogData":{"data":"000000000000002a","digest":"a6bb133cb1e3638ad7b8a3ff0539668e9e56f9b850ef1b2a810f5422eaa6c323","id":"0000000000000000000000000000000000000000000000000000000000000000","is":10368,"len":8,"pc":15544,"ptr":19136,"ra":0,"rb":1515152261580153489}}] ->>>>>>> a94b693b4 (update tests) test passing_no_dbgs_or_logs ... ok (???, 69 gas) test result: OK. 2 passed; 0 failed; finished in ??? @@ -68,7 +60,6 @@ ____ tested -- panic_handling_in_unit_tests -<<<<<<< HEAD test passing_dbgs_and_logs ... ok (???, 2697 gas) test passing_no_dbgs_or_logs ... ok (???, 69 gas) test failing_revert_intrinsic ... FAILED (???, 71 gas) @@ -76,15 +67,6 @@ tested -- panic_handling_in_unit_tests test failing_error_signal_assert ... FAILED (???, 383 gas) test failing_error_signal_assert_eq ... FAILED (???, 2211 gas) test failing_error_signal_assert_ne ... FAILED (???, 2205 gas) -======= - test passing_dbgs_and_logs ... ok (???, 2932 gas) - test passing_no_dbgs_or_logs ... ok (???, 69 gas) - test failing_revert_intrinsic ... FAILED (???, 71 gas) - test failing_revert_function_with_dbgs_and_logs ... FAILED (???, 2884 gas) - test failing_error_signal_assert ... FAILED (???, 524 gas) - test failing_error_signal_assert_eq ... FAILED (???, 2352 gas) - test failing_error_signal_assert_ne ... FAILED (???, 2346 gas) ->>>>>>> a94b693b4 (update tests) test failing_error_signal_require_str_error ... FAILED (???, 821 gas) test failing_error_signal_require_enum_error ... FAILED (???, 929 gas) test failing_panic_no_arg ... FAILED (???, 571 gas) @@ -167,13 +149,8 @@ AsciiString { data: "We will get logged the asserted values and this message." } "id": "0000000000000000000000000000000000000000000000000000000000000000", "is": 10368, "len": 8, -<<<<<<< HEAD "pc": 15456, "ptr": 19008, -======= - "pc": 15544, - "ptr": 19088, ->>>>>>> a94b693b4 (update tests) "ra": 0, "rb": 1515152261580153489 } @@ -185,13 +162,8 @@ AsciiString { data: "We will get logged the asserted values and this message." } "id": "0000000000000000000000000000000000000000000000000000000000000000", "is": 10368, "len": 8, -<<<<<<< HEAD "pc": 15456, "ptr": 19008, -======= - "pc": 15544, - "ptr": 19088, ->>>>>>> a94b693b4 (update tests) "ra": 0, "rb": 1515152261580153489 } @@ -230,13 +202,8 @@ AsciiString { data: "We will get logged the asserted values and this message." } "id": "0000000000000000000000000000000000000000000000000000000000000000", "is": 10368, "len": 8, -<<<<<<< HEAD "pc": 15456, "ptr": 19000, -======= - "pc": 15544, - "ptr": 19080, ->>>>>>> a94b693b4 (update tests) "ra": 0, "rb": 1515152261580153489 } @@ -248,13 +215,8 @@ AsciiString { data: "We will get logged the asserted values and this message." } "id": "0000000000000000000000000000000000000000000000000000000000000000", "is": 10368, "len": 8, -<<<<<<< HEAD "pc": 15456, "ptr": 19000, -======= - "pc": 15544, - "ptr": 19080, ->>>>>>> a94b693b4 (update tests) "ra": 0, "rb": 1515152261580153489 } diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_contract/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_contract/stdout.snap index e3ee920f625..ab92f855202 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_contract/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_contract/stdout.snap @@ -8,29 +8,17 @@ output: Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling library panicking_lib (test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_lib) Compiling contract panicking_contract (test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_contract) -<<<<<<< HEAD Finished debug [unoptimized + fuel] target(s) [8.08 KB] in ??? -======= - Finished debug [unoptimized + fuel] target(s) [8.152 KB] in ??? ->>>>>>> a94b693b4 (update tests) Running 12 tests, filtered 0 tests tested -- panicking_contract -<<<<<<< HEAD test test_panicking_in_contract_self_impl ... ok (???, 1454 gas) -======= - test test_panicking_in_contract_self_impl ... ok (???, 1513 gas) ->>>>>>> a94b693b4 (update tests) revert code: 828000000000000c ├─ panic message: panicking in contract self impl ├─ panicked: in ::panicking_in_contract_self_impl │ └─ at panicking_contract@1.2.3, src/main.sw:22:9 -<<<<<<< HEAD test test_directly_panicking_method ... ok (???, 2292 gas) -======= - test test_directly_panicking_method ... ok (???, 2351 gas) ->>>>>>> a94b693b4 (update tests) revert code: 820000000000000b ├─ panic message: Error C. ├─ panic value: C(true) @@ -38,11 +26,7 @@ tested -- panicking_contract │ └─ at panicking_contract@1.2.3, src/main.sw:28:9 decoded log values: C(true), log rb: 5503570629422409978 -<<<<<<< HEAD test test_nested_panic_inlined ... ok (???, 2791 gas) -======= - test test_nested_panic_inlined ... ok (???, 2850 gas) ->>>>>>> a94b693b4 (update tests) revert code: 8000000000c01001 ├─ panic message: Error E. ├─ panic value: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]) @@ -54,11 +38,7 @@ C(true), log rb: 5503570629422409978 └─ at panicking_contract@1.2.3, src/main.sw:32:9 decoded log values: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]), log rb: 5503570629422409978 -<<<<<<< HEAD test test_nested_panic_inlined_same_revert_code ... ok (???, 2791 gas) -======= - test test_nested_panic_inlined_same_revert_code ... ok (???, 2850 gas) ->>>>>>> a94b693b4 (update tests) revert code: 8000000000c01001 ├─ panic message: Error E. ├─ panic value: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]) @@ -70,11 +50,7 @@ E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString └─ at panicking_contract@1.2.3, src/main.sw:32:9 decoded log values: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]), log rb: 5503570629422409978 -<<<<<<< HEAD test test_nested_panic_non_inlined ... ok (???, 2851 gas) -======= - test test_nested_panic_non_inlined ... ok (???, 2910 gas) ->>>>>>> a94b693b4 (update tests) revert code: 8180000002804808 ├─ panic message: Error E. ├─ panic value: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]) @@ -86,11 +62,7 @@ E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString └─ at panicking_contract@1.2.3, src/main.sw:40:9 decoded log values: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]), log rb: 5503570629422409978 -<<<<<<< HEAD test test_nested_panic_non_inlined_same_revert_code ... ok (???, 2851 gas) -======= - test test_nested_panic_non_inlined_same_revert_code ... ok (???, 2910 gas) ->>>>>>> a94b693b4 (update tests) revert code: 8180000002804808 ├─ panic message: Error E. ├─ panic value: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]) @@ -102,11 +74,7 @@ E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { d └─ at panicking_contract@1.2.3, src/main.sw:40:9 decoded log values: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]), log rb: 5503570629422409978 -<<<<<<< HEAD test test_generic_panic_with_unit ... ok (???, 1900 gas) -======= - test test_generic_panic_with_unit ... ok (???, 1959 gas) ->>>>>>> a94b693b4 (update tests) revert code: 8100000000003806 ├─ panic value: () ├─ panicked: in panicking_lib::generic_panic @@ -115,11 +83,7 @@ E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { d └─ at panicking_contract@1.2.3, src/main.sw:48:9 decoded log values: (), log rb: 3330666440490685604 -<<<<<<< HEAD test test_generic_panic_with_unit_same_revert_code ... ok (???, 1900 gas) -======= - test test_generic_panic_with_unit_same_revert_code ... ok (???, 1959 gas) ->>>>>>> a94b693b4 (update tests) revert code: 8100000000003806 ├─ panic value: () ├─ panicked: in panicking_lib::generic_panic @@ -128,11 +92,7 @@ E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { d └─ at panicking_contract@1.2.3, src/main.sw:48:9 decoded log values: (), log rb: 3330666440490685604 -<<<<<<< HEAD test test_generic_panic_with_str ... ok (???, 2118 gas) -======= - test test_generic_panic_with_str ... ok (???, 2177 gas) ->>>>>>> a94b693b4 (update tests) revert code: 8080000000002804 ├─ panic message: generic panic with string ├─ panicked: in panicking_lib::generic_panic @@ -141,11 +101,7 @@ E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { d └─ at panicking_contract@1.2.3, src/main.sw:56:9 decoded log values: AsciiString { data: "generic panic with string" }, log rb: 10098701174489624218 -<<<<<<< HEAD test test_generic_panic_with_different_str_same_revert_code ... ok (???, 2261 gas) -======= - test test_generic_panic_with_different_str_same_revert_code ... ok (???, 2320 gas) ->>>>>>> a94b693b4 (update tests) revert code: 808000000000d019 ├─ panic message: generic panic with different string ├─ panicked: in panicking_lib::generic_panic @@ -154,11 +110,7 @@ AsciiString { data: "generic panic with string" }, log rb: 10098701174489624218 └─ at panicking_contract@1.2.3, src/main.sw:60:9 decoded log values: AsciiString { data: "generic panic with different string" }, log rb: 10098701174489624218 -<<<<<<< HEAD test test_generic_panic_with_error_type_enum ... ok (???, 2211 gas) -======= - test test_generic_panic_with_error_type_enum ... ok (???, 2270 gas) ->>>>>>> a94b693b4 (update tests) revert code: 830000000000700d ├─ panic message: Error A. ├─ panic value: A @@ -168,11 +120,7 @@ AsciiString { data: "generic panic with different string" }, log rb: 10098701174 └─ at panicking_contract@1.2.3, src/main.sw:64:9 decoded log values: A, log rb: 5503570629422409978 -<<<<<<< HEAD test test_generic_panic_with_error_type_enum_different_variant_same_revert_code ... ok (???, 2394 gas) -======= - test test_generic_panic_with_error_type_enum_different_variant_same_revert_code ... ok (???, 2453 gas) ->>>>>>> a94b693b4 (update tests) revert code: 830000000000e01b ├─ panic message: Error B. ├─ panic value: B(42) diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_lib/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_lib/stdout.snap index b6b3ddc4559..b2dfbed7317 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_lib/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_lib/stdout.snap @@ -182,20 +182,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_lib Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling library panicking_lib (test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_lib) -<<<<<<< HEAD Finished release [optimized + fuel] target(s) [3.904 KB] in ??? -======= - Finished release [optimized + fuel] target(s) [4.24 KB] in ??? ->>>>>>> a94b693b4 (update tests) Running 18 tests, filtered 0 tests tested -- panicking_lib -<<<<<<< HEAD test test_nested_panic_inlined ... ok (???, 1271 gas) -======= - test test_nested_panic_inlined ... ok (???, 1274 gas) ->>>>>>> a94b693b4 (update tests) revert code: 8000000000000000 ├─ panic message: Error E. ├─ panic value: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]) @@ -203,11 +195,7 @@ tested -- panicking_lib └─ at panicking_lib, src/lib.sw:35:5 decoded log values: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]), log rb: 2721958641300806892 -<<<<<<< HEAD test test_nested_panic_inlined_same_revert_code ... ok (???, 1271 gas) -======= - test test_nested_panic_inlined_same_revert_code ... ok (???, 1274 gas) ->>>>>>> a94b693b4 (update tests) revert code: 8000000000000000 ├─ panic message: Error E. ├─ panic value: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]) @@ -215,11 +203,7 @@ E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString └─ at panicking_lib, src/lib.sw:35:5 decoded log values: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]), log rb: 2721958641300806892 -<<<<<<< HEAD test test_nested_panic_non_inlined ... ok (???, 1289 gas) -======= - test test_nested_panic_non_inlined ... ok (???, 1294 gas) ->>>>>>> a94b693b4 (update tests) revert code: 8080000000000000 ├─ panic message: Error E. ├─ panic value: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]) @@ -227,11 +211,7 @@ E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString └─ at panicking_lib, src/lib.sw:41:9 decoded log values: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]), log rb: 2721958641300806892 -<<<<<<< HEAD test test_nested_panic_non_inlined_same_revert_code ... ok (???, 1289 gas) -======= - test test_nested_panic_non_inlined_same_revert_code ... ok (???, 1294 gas) ->>>>>>> a94b693b4 (update tests) revert code: 8080000000000000 ├─ panic message: Error E. ├─ panic value: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]) @@ -267,11 +247,7 @@ AsciiString { data: "generic panic with string" }, log rb: 10098701174489624218 └─ at panicking_lib, src/lib.sw:74:5 decoded log values: AsciiString { data: "generic panic different string" }, log rb: 10098701174489624218 -<<<<<<< HEAD test test_generic_panic_with_error_type_enum_variant ... ok (???, 750 gas) -======= - test test_generic_panic_with_error_type_enum_variant ... ok (???, 731 gas) ->>>>>>> a94b693b4 (update tests) revert code: 8200000000000000 ├─ panic message: Error A. ├─ panic value: A @@ -279,11 +255,7 @@ AsciiString { data: "generic panic different string" }, log rb: 1009870117448962 └─ at panicking_lib, src/lib.sw:74:5 decoded log values: A, log rb: 2721958641300806892 -<<<<<<< HEAD test test_generic_panic_with_error_type_enum_different_variant_same_revert_code ... ok (???, 750 gas) -======= - test test_generic_panic_with_error_type_enum_different_variant_same_revert_code ... ok (???, 731 gas) ->>>>>>> a94b693b4 (update tests) revert code: 8200000000000000 ├─ panic message: Error A. ├─ panic value: A @@ -310,11 +282,7 @@ A, log rb: 2721958641300806892 ├─ panic message: panic with string └─ panicked: in panicking_lib::test_panic_with_str └─ at panicking_lib, src/lib.sw:123:5 -<<<<<<< HEAD test test_panic_with_error_type_enum ... ok (???, 855 gas) -======= - test test_panic_with_error_type_enum ... ok (???, 840 gas) ->>>>>>> a94b693b4 (update tests) revert code: 8400000000000000 ├─ panic message: Error C. ├─ panic value: C(true) @@ -322,44 +290,28 @@ A, log rb: 2721958641300806892 └─ at panicking_lib, src/lib.sw:128:5 decoded log values: C(true), log rb: 2721958641300806892 -<<<<<<< HEAD test test_panic_with_generic_error_type_enum ... ok (???, 767 gas) -======= - test test_panic_with_generic_error_type_enum ... ok (???, 772 gas) ->>>>>>> a94b693b4 (update tests) revert code: 8480000000000000 ├─ panic value: A(42) └─ panicked: in panicking_lib::test_panic_with_generic_error_type_enum └─ at panicking_lib, src/lib.sw:133:5 decoded log values: A(42), log rb: 12408470889216862137 -<<<<<<< HEAD test test_panic_with_nested_generic_error_type ... ok (???, 1030 gas) -======= - test test_panic_with_nested_generic_error_type ... ok (???, 1044 gas) ->>>>>>> a94b693b4 (update tests) revert code: 8500000000000000 ├─ panic value: B(B(C(true))) └─ panicked: in panicking_lib::test_panic_with_nested_generic_error_type └─ at panicking_lib, src/lib.sw:138:5 decoded log values: B(B(C(true))), log rb: 14988555917426256081 -<<<<<<< HEAD test test_panic_with_generic_error_type_enum_with_abi_encode ... ok (???, 767 gas) -======= - test test_panic_with_generic_error_type_enum_with_abi_encode ... ok (???, 772 gas) ->>>>>>> a94b693b4 (update tests) revert code: 8580000000000000 ├─ panic value: A(42) └─ panicked: in panicking_lib::test_panic_with_generic_error_type_enum_with_abi_encode └─ at panicking_lib, src/lib.sw:143:5 decoded log values: A(42), log rb: 17388243649088655852 -<<<<<<< HEAD test test_panic_with_nested_generic_error_type_enum_with_abi_encode ... ok (???, 1030 gas) -======= - test test_panic_with_nested_generic_error_type_enum_with_abi_encode ... ok (???, 1044 gas) ->>>>>>> a94b693b4 (update tests) revert code: 8600000000000000 ├─ panic value: B(B(C(true))) └─ panicked: in panicking_lib::test_panic_with_nested_generic_error_type_enum_with_abi_encode diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call/stdout.snap index e7d201349ab..b77244df672 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call/stdout.snap @@ -7,36 +7,11 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-vec) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) -<<<<<<< HEAD -<<<<<<< HEAD -<<<<<<< HEAD -<<<<<<< HEAD -<<<<<<< HEAD Finished release [optimized + fuel] target(s) [19.408 KB] in ??? -======= - Finished release [optimized + fuel] target(s) [24.824 KB] in ??? ->>>>>>> a94b693b4 (update tests) -======= - Finished release [optimized + fuel] target(s) [24.944 KB] in ??? ->>>>>>> 2c082a4be (update tests) -======= - Finished release [optimized + fuel] target(s) [24.824 KB] in ??? ->>>>>>> b4cdcf291 (update tests) -======= - Finished release [optimized + fuel] target(s) [24.944 KB] in ??? ->>>>>>> 7e62d56dc (fix justfile for mac) -======= - Finished release [optimized + fuel] target(s) [24.824 KB] in ??? ->>>>>>> a53b41c32 (update tests) Running 33 tests, filtered 0 tests tested -- const_of_contract_call -<<<<<<< HEAD -<<<<<<< HEAD -<<<<<<< HEAD -<<<<<<< HEAD -<<<<<<< HEAD test cost_of_in_bool ... ok (???, 1736 gas) test cost_of_in_u8 ... ok (???, 1704 gas) test cost_of_in_u16 ... ok (???, 1779 gas) @@ -70,91 +45,6 @@ tested -- const_of_contract_call test in_vec_not_trivial ... ok (???, 5868 gas) test order_args_without_trivial_enum ... ok (???, 3049 gas) test order_args_with_trivial_enum ... ok (???, 3213 gas) -======= -======= ->>>>>>> b4cdcf291 (update tests) -======= ->>>>>>> a53b41c32 (update tests) - test cost_of_in_bool ... ok (???, 1804 gas) - test cost_of_in_u8 ... ok (???, 1772 gas) - test cost_of_in_u16 ... ok (???, 1937 gas) - test cost_of_in_u32 ... ok (???, 2044 gas) - test cost_of_in_u64 ... ok (???, 1638 gas) - test cost_of_in_u256 ... ok (???, 1668 gas) - test cost_of_in_b256 ... ok (???, 1658 gas) - test cost_of_in_str_0 ... ok (???, 2010 gas) - test cost_of_in_str_1 ... ok (???, 2140 gas) - test cost_of_in_str_8 ... ok (???, 2147 gas) - test cost_of_in_str_16 ... ok (???, 2144 gas) - test cost_of_in_str_32 ... ok (???, 2154 gas) - test cost_of_in_array_0 ... ok (???, 1607 gas) - test cost_of_in_array_1 ... ok (???, 1667 gas) - test cost_of_in_array_8 ... ok (???, 2177 gas) - test cost_of_in_array_16 ... ok (???, 1707 gas) - test cost_of_in_array_32 ... ok (???, 1756 gas) - test cost_of_in_array_64 ... ok (???, 1849 gas) - test cost_of_in_tuple_0 ... ok (???, 1620 gas) - test cost_of_in_tuple_1 ... ok (???, 1682 gas) - test cost_of_in_tuple_2 ... ok (???, 1700 gas) - test cost_of_in_tuple_3 ... ok (???, 1708 gas) - test cost_of_in_tuple_4 ... ok (???, 1715 gas) - test in_struct_u64 ... ok (???, 1670 gas) - test in_struct_u64_u64 ... ok (???, 1695 gas) - test in_struct_u64_u64_u64 ... ok (???, 1711 gas) - test in_enum_u64 ... ok (???, 1750 gas) - test in_enum_u64_u64 ... ok (???, 1752 gas) - test in_enum_u64_u64_u64 ... ok (???, 1765 gas) - test in_vec_trivial ... ok (???, 2916 gas) - test in_vec_not_trivial ... ok (???, 6198 gas) - test order_args_without_trivial_enum ... ok (???, 3248 gas) - test order_args_with_trivial_enum ... ok (???, 3460 gas) -<<<<<<< HEAD -<<<<<<< HEAD ->>>>>>> a94b693b4 (update tests) -======= -======= ->>>>>>> 7e62d56dc (fix justfile for mac) - test cost_of_in_bool ... ok (???, 1806 gas) - test cost_of_in_u8 ... ok (???, 1774 gas) - test cost_of_in_u16 ... ok (???, 1939 gas) - test cost_of_in_u32 ... ok (???, 2032 gas) - test cost_of_in_u64 ... ok (???, 1640 gas) - test cost_of_in_u256 ... ok (???, 1670 gas) - test cost_of_in_b256 ... ok (???, 1660 gas) - test cost_of_in_str_0 ... ok (???, 2012 gas) - test cost_of_in_str_1 ... ok (???, 2142 gas) - test cost_of_in_str_8 ... ok (???, 2149 gas) - test cost_of_in_str_16 ... ok (???, 2146 gas) - test cost_of_in_str_32 ... ok (???, 2156 gas) - test cost_of_in_array_0 ... ok (???, 1609 gas) - test cost_of_in_array_1 ... ok (???, 1669 gas) - test cost_of_in_array_8 ... ok (???, 2179 gas) - test cost_of_in_array_16 ... ok (???, 1709 gas) - test cost_of_in_array_32 ... ok (???, 1758 gas) - test cost_of_in_array_64 ... ok (???, 1851 gas) - test cost_of_in_tuple_0 ... ok (???, 1622 gas) - test cost_of_in_tuple_1 ... ok (???, 1684 gas) - test cost_of_in_tuple_2 ... ok (???, 1702 gas) - test cost_of_in_tuple_3 ... ok (???, 1710 gas) - test cost_of_in_tuple_4 ... ok (???, 1717 gas) - test in_struct_u64 ... ok (???, 1672 gas) - test in_struct_u64_u64 ... ok (???, 1697 gas) - test in_struct_u64_u64_u64 ... ok (???, 1713 gas) - test in_enum_u64 ... ok (???, 1752 gas) - test in_enum_u64_u64 ... ok (???, 1754 gas) - test in_enum_u64_u64_u64 ... ok (???, 1767 gas) - test in_vec_trivial ... ok (???, 2918 gas) - test in_vec_not_trivial ... ok (???, 5940 gas) - test order_args_without_trivial_enum ... ok (???, 3250 gas) - test order_args_with_trivial_enum ... ok (???, 3462 gas) -<<<<<<< HEAD ->>>>>>> 2c082a4be (update tests) -======= ->>>>>>> b4cdcf291 (update tests) -======= ->>>>>>> 7e62d56dc (fix justfile for mac) -======= ->>>>>>> a53b41c32 (update tests) test result: OK. 33 passed; 0 failed; finished in ??? @@ -314,11 +204,7 @@ output: tested -- const_of_contract_call -<<<<<<< HEAD test isolated_cost_of_in_bool ... ok (???, 1540 gas) -======= - test isolated_cost_of_in_bool ... ok (???, 1580 gas) ->>>>>>> a94b693b4 (update tests) test result: OK. 1 passed; 0 failed; finished in ??? @@ -393,20 +279,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-vec) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) -<<<<<<< HEAD Finished release [optimized + fuel] target(s) [1.992 KB] in ??? -======= - Finished release [optimized + fuel] target(s) [2.32 KB] in ??? ->>>>>>> a94b693b4 (update tests) Running 1 test, filtered 0 tests tested -- const_of_contract_call -<<<<<<< HEAD test order_args_without_trivial_enum ... ok (???, 2822 gas) -======= - test order_args_without_trivial_enum ... ok (???, 2982 gas) ->>>>>>> a94b693b4 (update tests) test result: OK. 1 passed; 0 failed; finished in ??? @@ -421,11 +299,7 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-vec) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) -<<<<<<< HEAD Finished release [optimized + fuel] target(s) [2.288 KB] in ??? -======= - Finished release [optimized + fuel] target(s) [2.688 KB] in ??? ->>>>>>> a94b693b4 (update tests) Running 1 test, filtered 0 tests tested -- const_of_contract_call @@ -565,11 +439,7 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-vec) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) -<<<<<<< HEAD Finished release [optimized + fuel] target(s) [656 B] in ??? -======= - Finished release [optimized + fuel] target(s) [760 B] in ??? ->>>>>>> a94b693b4 (update tests) Running 1 test, filtered 0 tests tested -- const_of_contract_call @@ -589,11 +459,7 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-vec) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) -<<<<<<< HEAD Finished release [optimized + fuel] target(s) [656 B] in ??? -======= - Finished release [optimized + fuel] target(s) [760 B] in ??? ->>>>>>> a94b693b4 (update tests) Running 1 test, filtered 0 tests tested -- const_of_contract_call @@ -653,11 +519,7 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-vec) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) -<<<<<<< HEAD Finished release [optimized + fuel] target(s) [640 B] in ??? -======= - Finished release [optimized + fuel] target(s) [744 B] in ??? ->>>>>>> a94b693b4 (update tests) Running 1 test, filtered 0 tests tested -- const_of_contract_call @@ -677,11 +539,7 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-vec) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) -<<<<<<< HEAD Finished release [optimized + fuel] target(s) [640 B] in ??? -======= - Finished release [optimized + fuel] target(s) [744 B] in ??? ->>>>>>> a94b693b4 (update tests) Running 1 test, filtered 0 tests tested -- const_of_contract_call @@ -701,20 +559,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-vec) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) -<<<<<<< HEAD Finished release [optimized + fuel] target(s) [752 B] in ??? -======= - Finished release [optimized + fuel] target(s) [744 B] in ??? ->>>>>>> a94b693b4 (update tests) Running 1 test, filtered 0 tests tested -- const_of_contract_call -<<<<<<< HEAD test isolated_cost_of_in_tuple_4 ... ok (???, 1443 gas) -======= - test isolated_cost_of_in_tuple_4 ... ok (???, 1477 gas) ->>>>>>> a94b693b4 (update tests) test result: OK. 1 passed; 0 failed; finished in ??? @@ -729,20 +579,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-vec) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) -<<<<<<< HEAD Finished release [optimized + fuel] target(s) [1.064 KB] in ??? -======= - Finished release [optimized + fuel] target(s) [1.176 KB] in ??? ->>>>>>> a94b693b4 (update tests) Running 1 test, filtered 0 tests tested -- const_of_contract_call -<<<<<<< HEAD test isolated_cost_of_in_u16 ... ok (???, 1682 gas) -======= - test isolated_cost_of_in_u16 ... ok (???, 1723 gas) ->>>>>>> a94b693b4 (update tests) test result: OK. 1 passed; 0 failed; finished in ??? @@ -777,20 +619,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-vec) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) -<<<<<<< HEAD Finished release [optimized + fuel] target(s) [1.152 KB] in ??? -======= - Finished release [optimized + fuel] target(s) [1.272 KB] in ??? ->>>>>>> a94b693b4 (update tests) Running 1 test, filtered 0 tests tested -- const_of_contract_call -<<<<<<< HEAD test isolated_cost_of_in_u32 ... ok (???, 1749 gas) -======= - test isolated_cost_of_in_u32 ... ok (???, 1791 gas) ->>>>>>> a94b693b4 (update tests) test result: OK. 1 passed; 0 failed; finished in ??? @@ -825,11 +659,7 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-vec) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) -<<<<<<< HEAD Finished release [optimized + fuel] target(s) [824 B] in ??? -======= - Finished release [optimized + fuel] target(s) [944 B] in ??? ->>>>>>> a94b693b4 (update tests) Running 1 test, filtered 0 tests tested -- const_of_contract_call @@ -854,11 +684,7 @@ output: tested -- const_of_contract_call -<<<<<<< HEAD test in_vec_not_trivial ... ok (???, 4893 gas) -======= - test in_vec_not_trivial ... ok (???, 5055 gas) ->>>>>>> a94b693b4 (update tests) test result: OK. 1 passed; 0 failed; finished in ??? From 6d03a843226e35f462657cffc2466f70204f1675 Mon Sep 17 00:00:00 2001 From: Daniel Frederico Lins Leite Date: Wed, 8 Jul 2026 14:26:29 -0300 Subject: [PATCH 33/42] fix rebase issues --- sway-ir/src/optimize/conditional_constprop.rs | 2 -- sway-ir/src/optimize/memcpyopt.rs | 7 ------- 2 files changed, 9 deletions(-) diff --git a/sway-ir/src/optimize/conditional_constprop.rs b/sway-ir/src/optimize/conditional_constprop.rs index f60c94b5a10..9d11a0a8080 100644 --- a/sway-ir/src/optimize/conditional_constprop.rs +++ b/sway-ir/src/optimize/conditional_constprop.rs @@ -24,8 +24,6 @@ pub fn ccp( analyses: &AnalysisResults, function: Function, ) -> Result { - let mut modified = false; - let dom_tree: &DomTree = analyses.get_analysis_result(function); // In the set of blocks dominated by `key`, replace all uses of `val.0` with `val.1`. diff --git a/sway-ir/src/optimize/memcpyopt.rs b/sway-ir/src/optimize/memcpyopt.rs index c0298116514..b32714b8b3d 100644 --- a/sway-ir/src/optimize/memcpyopt.rs +++ b/sway-ir/src/optimize/memcpyopt.rs @@ -37,13 +37,6 @@ pub fn mem_copy_opt( Ok(modified) } -struct InstInfo { - // The block containing the instruction. - block: Block, - // Relative (use only for comparison) position of instruction in `block`. - pos: usize, -} - // If the source is an Arg, we replace uses of destination with Arg. // Otherwise (`get_local`), we replace the local symbol in-place. enum ReplaceWith { From 91a1931b26df486c1013219d99af215d2bac547c Mon Sep 17 00:00:00 2001 From: Daniel Frederico Lins Leite Date: Wed, 8 Jul 2026 14:44:46 -0300 Subject: [PATCH 34/42] fix update test ids --- test/update-contract-ids.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/test/update-contract-ids.sh b/test/update-contract-ids.sh index e82ae867606..3535846e6ed 100755 --- a/test/update-contract-ids.sh +++ b/test/update-contract-ids.sh @@ -96,12 +96,11 @@ get_new_contract_id() { echo -e "${BOLD_WHITE}$PROJ${NC}" pushd "$DIR/.." > /dev/null + REGEX="0x[a-zA-Z0-9]{64}" CONTRACT_ID=$(cargo r -p forc --release -- contract-id --path $CONTRACT_ARGS 2> /dev/null | $grep -oP "$REGEX") popd > /dev/null if [[ $CONTRACT_ID ]]; then - popd >> /dev/null - SED_EXPR="${LINE}s/0x[a-zA-Z0-9]*/$CONTRACT_ID/g" # check if there is a diff From 7ab5ae20cfb1b2a8eaf322f5c5722115224ff727 Mon Sep 17 00:00:00 2001 From: Daniel Frederico Lins Leite Date: Wed, 8 Jul 2026 14:57:45 -0300 Subject: [PATCH 35/42] fix update contract ids script --- test/update-contract-ids.sh | 38 +++++++------------------------------ 1 file changed, 7 insertions(+), 31 deletions(-) diff --git a/test/update-contract-ids.sh b/test/update-contract-ids.sh index 3535846e6ed..c1497ddae6f 100755 --- a/test/update-contract-ids.sh +++ b/test/update-contract-ids.sh @@ -93,45 +93,20 @@ get_new_contract_id() { if [[ $CONTRACT_ARGS ]]; then PROJ=$(realpath "$FOLDER/..") - echo -e "${BOLD_WHITE}$PROJ${NC}" pushd "$DIR/.." > /dev/null REGEX="0x[a-zA-Z0-9]{64}" CONTRACT_ID=$(cargo r -p forc --release -- contract-id --path $CONTRACT_ARGS 2> /dev/null | $grep -oP "$REGEX") - popd > /dev/null - - if [[ $CONTRACT_ID ]]; then - SED_EXPR="${LINE}s/0x[a-zA-Z0-9]*/$CONTRACT_ID/g" - # check if there is a diff - diff -s --color <(cat $FILE) <(cat $FILE | $sed --expression="$SED_EXPR") > /dev/null - if [ $? -eq 0 ]; then - # no diff, continue - echo -e " ${BOLD_GREEN}no changes needed${NC} ($CONTRACT_ID)" - else - # diff detected, check we are clean to update files, if not abort - if [[ "$INTERACTIVELY" == "0" ]]; then - # Don´t change anything if git is dirty - if [ "$CHANGES" != "0" ]; then - echo -e " ${BOLD_RED}Aborting${NC} This contract id needs update, but git state is not clean. commit, restore first or run with \"-i\"." - echo $FILE - diff -s --color <(cat $FILE) <(cat $FILE | $sed --expression="$SED_EXPR") - exit - fi - # we are clean and can update files - $sed -i "$SED_EXPR" $FILE - else - # ask confirmation before applying the change - diff -s --color <(cat $FILE) <(cat $FILE | $sed --expression="$SED_EXPR") - ask_confirmation "$sed -i \"$SED_EXPR\" $FILE" "Update contract id" - fi - echo -e " ${BOLD_GREEN}updated${NC} ($CONTRACT_ID)" - fi + # if error print error and quit + if [ $? -eq 0 ]; then + echo "$CONTRACT_ID" else - >&2 echo "cargo r -p forc --release -- contract-id --path $CONTRACT_ARGS" - cargo r -p forc --release -- contract-id --path $CONTRACT_ARGS + cargo r -p forc --release -- build --path $CONTRACT_ARGS exit fi + + popd > /dev/null fi } @@ -173,6 +148,7 @@ update_line() { LINE=${PARTS[1]} CONTRACT_ID="$2" + if [[ $CONTRACT_ID ]]; then SED_EXPR="${LINE}s/0x[a-zA-Z0-9]*/$CONTRACT_ID/g" From cb90f4fdabb0c6a4c0a3162efde785c38b9fb41d Mon Sep 17 00:00:00 2001 From: Daniel Frederico Lins Leite Date: Wed, 8 Jul 2026 15:08:43 -0300 Subject: [PATCH 36/42] fix rebase issues --- sway-ir/tests/tests.rs | 6 ------ 1 file changed, 6 deletions(-) diff --git a/sway-ir/tests/tests.rs b/sway-ir/tests/tests.rs index 42355bed635..0d0f436e996 100644 --- a/sway-ir/tests/tests.rs +++ b/sway-ir/tests/tests.rs @@ -296,17 +296,11 @@ fn inline() { if params.contains(&"all") { // Just inline everything, replacing all CALL instructions. -<<<<<<< HEAD let mut changed = false; for func in funcs.into_iter() { changed |= opt::inline_all_function_calls(ir, &func).unwrap(); } changed -======= - funcs - .into_iter() - .any(|func| opt::inline_all_function_calls(ir, &func).unwrap()) ->>>>>>> 3de9fb411 (fmt and clippy issues) } else { // Get the parameters from the first line. See the inline/README.md for details. If // there aren't any found then there won't be any constraints and it'll be the From 84363d70d1974a7d380bc048384d32be60bc2671 Mon Sep 17 00:00:00 2001 From: Daniel Frederico Lins Leite Date: Sat, 11 Jul 2026 14:57:17 -0300 Subject: [PATCH 37/42] removing forc cli tests --- forc/tests/cli_integration.rs | 88 ----------------------------------- 1 file changed, 88 deletions(-) delete mode 100644 forc/tests/cli_integration.rs diff --git a/forc/tests/cli_integration.rs b/forc/tests/cli_integration.rs deleted file mode 100644 index 40c7ac7275d..00000000000 --- a/forc/tests/cli_integration.rs +++ /dev/null @@ -1,88 +0,0 @@ -use std::path::PathBuf; - -use rexpect::spawn; - -const TIMEOUT_MS: u64 = 300000; - -fn test_fixtures_path() -> PathBuf { - PathBuf::from(env!("CARGO_MANIFEST_DIR")) - .join("tests") - .join("fixtures") - .canonicalize() - .unwrap() -} - -#[test] -fn test_forc_test_decoded_logs() -> Result<(), rexpect::error::Error> { - // Spawn the forc binary using cargo run - let project_dir = test_fixtures_path().join("test_contract"); - let mut process = spawn( - &format!( - "cargo run --bin forc -- test --logs --path {}", - project_dir.to_string_lossy() - ), - Some(TIMEOUT_MS), - )?; - - // Assert that the output is correct - process.exp_string(" test test_log_4")?; - process.exp_string("decoded log values:")?; - process.exp_string("4, log rb: 1515152261580153489")?; - process.exp_string(" test test_log_2")?; - process.exp_string("decoded log values:")?; - process.exp_string("2, log rb: 1515152261580153489")?; - - process.process.exit()?; - Ok(()) -} - -#[test] -fn test_forc_test_raw_logs() -> Result<(), rexpect::error::Error> { - // Spawn the forc binary using cargo run - let project_dir = test_fixtures_path().join("test_contract"); - let mut process = spawn( - &format!( - "cargo run --bin forc -- test --raw-logs --path {}", - project_dir.to_string_lossy() - ), - Some(TIMEOUT_MS), - )?; - - // Assert that the output is correct - process.exp_string(" test test_log_4")?; - process.exp_string("raw logs:")?; - process.exp_string(r#"[{"LogData":{"data":"0000000000000004","digest":"8005f02d43fa06e7d0585fb64c961d57e318b27a145c857bcd3a6bdb413ff7fc","id":"0000000000000000000000000000000000000000000000000000000000000000","is":10368,"len":8,"pc":11288,"ptr":12464,"ra":0,"rb":1515152261580153489}}]"#)?; - process.exp_string(" test test_log_2")?; - process.exp_string("raw logs:")?; - process.exp_string(r#"[{"LogData":{"data":"0000000000000002","digest":"cd04a4754498e06db5a13c5f371f1f04ff6d2470f24aa9bd886540e5dce77f70","id":"0000000000000000000000000000000000000000000000000000000000000000","is":10368,"len":8,"pc":11288,"ptr":12464,"ra":0,"rb":1515152261580153489}}]"#)?; - - process.process.exit()?; - Ok(()) -} - -#[test] -fn test_forc_test_both_logs() -> Result<(), rexpect::error::Error> { - // Spawn the forc binary using cargo run - let project_dir = test_fixtures_path().join("test_contract"); - let mut process = spawn( - &format!( - "cargo run --bin forc -- test --logs --raw-logs --path {}", - project_dir.to_string_lossy() - ), - Some(TIMEOUT_MS), - )?; - - // Assert that the output is correct - process.exp_string(" test test_log_4")?; - process.exp_string("decoded log values:")?; - process.exp_string("4, log rb: 1515152261580153489")?; - process.exp_string("raw logs:")?; - process.exp_string(r#"[{"LogData":{"data":"0000000000000004","digest":"8005f02d43fa06e7d0585fb64c961d57e318b27a145c857bcd3a6bdb413ff7fc","id":"0000000000000000000000000000000000000000000000000000000000000000","is":10368,"len":8,"pc":11288,"ptr":12464,"ra":0,"rb":1515152261580153489}}]"#)?; - process.exp_string(" test test_log_2")?; - process.exp_string("decoded log values:")?; - process.exp_string("2, log rb: 1515152261580153489")?; - process.exp_string("raw logs:")?; - process.exp_string(r#"[{"LogData":{"data":"0000000000000002","digest":"cd04a4754498e06db5a13c5f371f1f04ff6d2470f24aa9bd886540e5dce77f70","id":"0000000000000000000000000000000000000000000000000000000000000000","is":10368,"len":8,"pc":11288,"ptr":12464,"ra":0,"rb":1515152261580153489}}]"#)?; - process.process.exit()?; - Ok(()) -} From 63ac4f321c372aa60b42509e369852fa626da396 Mon Sep 17 00:00:00 2001 From: Daniel Frederico Lins Leite Date: Sat, 11 Jul 2026 16:11:39 -0300 Subject: [PATCH 38/42] update tests --- .../test_programs/raw_ptr/src/raw_ptr.sw | 4 +--- test/src/sdk-harness/test_projects/auth/mod.rs | 8 -------- 2 files changed, 1 insertion(+), 11 deletions(-) diff --git a/test/src/in_language_tests/test_programs/raw_ptr/src/raw_ptr.sw b/test/src/in_language_tests/test_programs/raw_ptr/src/raw_ptr.sw index 044cb2569c8..cbf3582e244 100644 --- a/test/src/in_language_tests/test_programs/raw_ptr/src/raw_ptr.sw +++ b/test/src/in_language_tests/test_programs/raw_ptr/src/raw_ptr.sw @@ -66,7 +66,7 @@ fn raw_ptr_copy_to_and_read() { } #[test] -fn raw_ptr_write() { +fn test_raw_ptr_write() { // Write values into a buffer. let buf_ptr = alloc::(2); buf_ptr.write(true); @@ -117,8 +117,6 @@ fn raw_ptr_overwrite_after_read() { raw_ptr_write(__addr_of(v), 0u32); raw_ptr_write(__addr_of(v), 0u64); raw_ptr_write(__addr_of(v), TestStruct { boo: false, uwu: 0 }); - - true } // We expect that each monomorphization of raw_ptr::write to be optimal diff --git a/test/src/sdk-harness/test_projects/auth/mod.rs b/test/src/sdk-harness/test_projects/auth/mod.rs index f940f5599ee..3236d65d173 100644 --- a/test/src/sdk-harness/test_projects/auth/mod.rs +++ b/test/src/sdk-harness/test_projects/auth/mod.rs @@ -573,11 +573,7 @@ async fn can_get_predicate_address() { // Setup predicate. let hex_predicate_address: &str = -<<<<<<< HEAD "0x9b58a6d21eae9e75c6a1cbe9798ddcfda696454d1871b92506293363950d7259"; // AUTO-PREDICATE-ID auth_predicate test/src/sdk-harness --release --output-directory test/src/sdk-harness/out -======= - "0xe86adf2bd43b8e94ea23426964c6de393a930ce83c8174cccb9e7f6297b7abec"; ->>>>>>> a53b41c32 (update tests) let predicate_address = Address::from_str(hex_predicate_address).expect("failed to create Address from string"); let predicate_data = AuthPredicateEncoder::default() @@ -700,11 +696,7 @@ async fn when_incorrect_predicate_address_passed() { async fn can_get_predicate_address_in_message() { // Setup predicate address. let hex_predicate_address: &str = -<<<<<<< HEAD "0x9b58a6d21eae9e75c6a1cbe9798ddcfda696454d1871b92506293363950d7259"; // AUTO-PREDICATE-ID auth_predicate test/src/sdk-harness --release --output-directory test/src/sdk-harness/out -======= - "0xe86adf2bd43b8e94ea23426964c6de393a930ce83c8174cccb9e7f6297b7abec"; ->>>>>>> a53b41c32 (update tests) let predicate_address = Address::from_str(hex_predicate_address).expect("failed to create Address from string"); From 52096f14ca6d9c01f439fe4294c7d6378a55dbda Mon Sep 17 00:00:00 2001 From: Daniel Frederico Lins Leite Date: Sat, 11 Jul 2026 16:20:59 -0300 Subject: [PATCH 39/42] update tests --- .../json_abi_oracle_new_encoding.release.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/configurable_consts/json_abi_oracle_new_encoding.release.json b/test/src/e2e_vm_tests/test_programs/should_pass/language/configurable_consts/json_abi_oracle_new_encoding.release.json index b495c4f5108..9102158017e 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/configurable_consts/json_abi_oracle_new_encoding.release.json +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/configurable_consts/json_abi_oracle_new_encoding.release.json @@ -243,4 +243,4 @@ "panickingCalls": {}, "programType": "script", "specVersion": "1.2" -} +} \ No newline at end of file From 8c873957cf666c6a20fd27185aea6ed0f19c0db6 Mon Sep 17 00:00:00 2001 From: Daniel Frederico Lins Leite Date: Mon, 13 Jul 2026 14:51:25 -0300 Subject: [PATCH 40/42] fmt and clippy issues --- sway-ir/src/analysis/loop_analysis.rs | 5 ++++- sway-ir/src/pass_manager.rs | 10 +++++----- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/sway-ir/src/analysis/loop_analysis.rs b/sway-ir/src/analysis/loop_analysis.rs index c99b9743d79..58d7a90ad18 100644 --- a/sway-ir/src/analysis/loop_analysis.rs +++ b/sway-ir/src/analysis/loop_analysis.rs @@ -124,7 +124,10 @@ fn compute_loop_analysis( continue; } - q.extend(block.pred_iter(context)); + let reachabe_preds = block + .pred_iter(context) + .filter(|block| po.is_reachable(block)); + q.extend(reachabe_preds); } assert!(loop_blocks.contains(&loop_tail)); diff --git a/sway-ir/src/pass_manager.rs b/sway-ir/src/pass_manager.rs index d4c5ae30f97..a3ba8b76a9b 100644 --- a/sway-ir/src/pass_manager.rs +++ b/sway-ir/src/pass_manager.rs @@ -369,8 +369,7 @@ impl PassManager { let passes = passes.flatten_pass_group(); // run until stabilize - // 10 here just to avoid infinite running - for _ in 0..10 { + for _ in 0..16 { let mut modified = false; for pass in passes.iter() { @@ -409,10 +408,11 @@ impl PassManager { std::env::var("SWAY_FORCE_VERIFY_IR").unwrap_or_else(|_| "false".to_string()); let force_verify: bool = force_verify.parse().unwrap_or(false); - for _ in 0..2 { + let passes = passes.flatten_pass_group(); + for _ in 0..16 { let mut iter_modified = false; - for pass in passes.flatten_pass_group() { + for pass in passes.iter() { // Save IR before optimisation only when forcing verification let ir_before = if force_verify { ir.to_string() @@ -432,7 +432,7 @@ impl PassManager { iter_modified |= modified; - if print_opts.passes.contains(pass) && (!print_opts.modified_only || modified) { + if print_opts.passes.contains(*pass) && (!print_opts.modified_only || modified) { print_ir_after_pass(ir, self.lookup_registered_pass(pass).unwrap()); } From a269d74501ad8a794a323c7f867398c18e7d875b Mon Sep 17 00:00:00 2001 From: Daniel Frederico Lins Leite Date: Mon, 13 Jul 2026 16:38:43 -0300 Subject: [PATCH 41/42] update tests --- .../language/array/array_repeat/stdout.snap | 1041 +++++++-------- .../language/const_generics/stdout.snap | 4 +- .../language/intrinsics/dbg/stdout.snap | 2 +- .../intrinsics/dbg_release/stdout.snap | 6 +- .../should_pass/language/logging/stdout.snap | 1149 ++++++++--------- .../match_expressions_all/stdout.snap | 112 +- .../panic_handling_in_unit_tests/stdout.snap | 18 +- .../panicking_contract/stdout.snap | 26 +- .../panicking_lib/stdout.snap | 20 +- .../panicking_script/stdout.snap | 4 +- .../optimisations/no_locbase/stdout.snap | 386 +++--- .../test_contracts/basic_storage/stdout.snap | 48 +- .../const_of_contract_call/stdout.snap | 102 +- 13 files changed, 1436 insertions(+), 1482 deletions(-) diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/array/array_repeat/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/array/array_repeat/stdout.snap index f19917478f6..14596704498 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/array/array_repeat/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/array/array_repeat/stdout.snap @@ -33,6 +33,10 @@ script { } entry_orig fn main_0() -> (), !13 { + local { __ptr u8, u64 } __anon_0 + local { __ptr u8, u64 } __anon_00 + local slice __log_arg + local slice __log_arg0 local [u8; 5] __ret_val local [u64; 5] __ret_val0 local [u64; 5] __ret_val1 @@ -51,6 +55,8 @@ script { local [u64; 25] __ret_val8 local [u64; 25] __ret_val9 local [u8; 1] array + local u8 value_ + local u8 value_0 entry(): v1930v1 = get_local __ptr [u8; 5], __ret_val @@ -100,109 +106,133 @@ script { cbr v1900v1, assert_eq_44_block0(), assert_eq_44_block1(), !33 assert_eq_44_block0(): - v1907v1 = call log_47(v815v1), !36 - v1909v1 = call log_47(v816v1), !39 + v1907v3 = get_local __ptr u8, value_, !36 + mem_copy_val v1907v3, v814v1 + v2108v1 = get_local __ptr { __ptr u8, u64 }, __anon_0, !41 + v895v1 = const u64 0 + v2109v1 = get_elem_ptr v2108v1, __ptr __ptr u8, v895v1, !42 + store v1907v3 to v2109v1, !43 + v898v1 = const u64 1 + v2111v1 = get_elem_ptr v2108v1, __ptr u64, v898v1, !44 + v648v1 = const u64 1 + store v648v1 to v2111v1, !45 + v2113v1 = cast_ptr v2108v1 to __ptr slice, !46 + v2114v1 = get_local __ptr slice, __log_arg, !36 + mem_copy_val v2114v1, v2113v1, !36 + v781v1 = const u64 14454674236531057292 + log __ptr slice v2114v1, v781v1, !36 + v1909v3 = get_local __ptr u8, value_0, !49 + store v816v1 to v1909v3, !49 + v2120v1 = get_local __ptr { __ptr u8, u64 }, __anon_00, !50 + v2121v1 = get_elem_ptr v2120v1, __ptr __ptr u8, v895v1, !51 + store v1909v3 to v2121v1, !52 + v2123v1 = get_elem_ptr v2120v1, __ptr u64, v898v1, !53 + store v648v1 to v2123v1, !54 + v2125v1 = cast_ptr v2120v1 to __ptr slice, !55 + v2126v1 = get_local __ptr slice, __log_arg0, !49 + mem_copy_val v2126v1, v2125v1, !49 + log __ptr slice v2126v1, v781v1, !49 v909v1 = const u64 18446744073709486083 - revert v909v1, !44 + revert v909v1, !60 assert_eq_44_block1(): v819v1 = const unit () ret () v819v1 } - fn array_repeat_zero_small_u8_1(mut __ret_value: __ptr [u8; 5]) -> (), !48 { + fn array_repeat_zero_small_u8_1(mut __ret_value: __ptr [u8; 5]) -> (), !64 { entry(mut __ret_value: __ptr [u8; 5]): - mem_clear_val __ret_value, !49 + mem_clear_val __ret_value, !65 v1928v1 = const unit () ret () v1928v1 } - fn array_repeat_zero_small_u16_2(mut __ret_value: __ptr [u64; 5]) -> (), !52 { + fn array_repeat_zero_small_u16_2(mut __ret_value: __ptr [u64; 5]) -> (), !68 { entry(mut __ret_value: __ptr [u64; 5]): - mem_clear_val __ret_value, !53 + mem_clear_val __ret_value, !69 v1935v1 = const unit () ret () v1935v1 } - fn array_repeat_zero_small_u256_5(mut __ret_value: __ptr [u256; 5]) -> (), !56 { + fn array_repeat_zero_small_u256_5(mut __ret_value: __ptr [u256; 5]) -> (), !72 { entry(mut __ret_value: __ptr [u256; 5]): - mem_clear_val __ret_value, !57 + mem_clear_val __ret_value, !73 v1948v1 = const unit () ret () v1948v1 } - fn array_repeat_zero_small_b256_6(mut __ret_value: __ptr [b256; 5]) -> (), !60 { + fn array_repeat_zero_small_b256_6(mut __ret_value: __ptr [b256; 5]) -> (), !76 { entry(mut __ret_value: __ptr [b256; 5]): - mem_clear_val __ret_value, !61 + mem_clear_val __ret_value, !77 v1955v1 = const unit () ret () v1955v1 } - fn array_repeat_zero_small_bool_7(mut __ret_value: __ptr [bool; 5]) -> (), !64 { + fn array_repeat_zero_small_bool_7(mut __ret_value: __ptr [bool; 5]) -> (), !80 { entry(mut __ret_value: __ptr [bool; 5]): - mem_clear_val __ret_value, !65 + mem_clear_val __ret_value, !81 v1962v1 = const unit () ret () v1962v1 } - fn array_repeat_zero_big_u8_8(mut __ret_value: __ptr [u8; 25]) -> (), !68 { + fn array_repeat_zero_big_u8_8(mut __ret_value: __ptr [u8; 25]) -> (), !84 { entry(mut __ret_value: __ptr [u8; 25]): - mem_clear_val __ret_value, !69 + mem_clear_val __ret_value, !85 v1969v1 = const unit () ret () v1969v1 } - fn array_repeat_zero_big_u32_10(mut __ret_value: __ptr [u64; 25]) -> (), !72 { + fn array_repeat_zero_big_u32_10(mut __ret_value: __ptr [u64; 25]) -> (), !88 { entry(mut __ret_value: __ptr [u64; 25]): - mem_clear_val __ret_value, !73 + mem_clear_val __ret_value, !89 v1976v1 = const unit () ret () v1976v1 } - fn array_repeat_zero_big_u256_12(mut __ret_value: __ptr [u256; 25]) -> (), !76 { + fn array_repeat_zero_big_u256_12(mut __ret_value: __ptr [u256; 25]) -> (), !92 { entry(mut __ret_value: __ptr [u256; 25]): - mem_clear_val __ret_value, !77 + mem_clear_val __ret_value, !93 v1989v1 = const unit () ret () v1989v1 } - fn array_repeat_zero_big_b256_13(mut __ret_value: __ptr [b256; 25]) -> (), !80 { + fn array_repeat_zero_big_b256_13(mut __ret_value: __ptr [b256; 25]) -> (), !96 { entry(mut __ret_value: __ptr [b256; 25]): - mem_clear_val __ret_value, !81 + mem_clear_val __ret_value, !97 v1996v1 = const unit () ret () v1996v1 } - fn array_repeat_zero_big_bool_14(mut __ret_value: __ptr [bool; 25]) -> (), !84 { + fn array_repeat_zero_big_bool_14(mut __ret_value: __ptr [bool; 25]) -> (), !100 { entry(mut __ret_value: __ptr [bool; 25]): - mem_clear_val __ret_value, !85 + mem_clear_val __ret_value, !101 v2003v1 = const unit () ret () v2003v1 } - fn small_array_repeat_15(mut __ret_value: __ptr [bool; 5]) -> (), !88 { + fn small_array_repeat_15(mut __ret_value: __ptr [bool; 5]) -> (), !104 { entry(mut __ret_value: __ptr [bool; 5]): v837v1 = const u64 0 - v838v1 = get_elem_ptr __ret_value, __ptr bool, v837v1, !89 + v838v1 = get_elem_ptr __ret_value, __ptr bool, v837v1, !105 v117v1 = const bool true - store v117v1 to v838v1, !89 + store v117v1 to v838v1, !105 v840v1 = const u64 1 - v841v1 = get_elem_ptr __ret_value, __ptr bool, v840v1, !89 - store v117v1 to v841v1, !89 + v841v1 = get_elem_ptr __ret_value, __ptr bool, v840v1, !105 + store v117v1 to v841v1, !105 v843v1 = const u64 2 - v844v1 = get_elem_ptr __ret_value, __ptr bool, v843v1, !89 - store v117v1 to v844v1, !89 + v844v1 = get_elem_ptr __ret_value, __ptr bool, v843v1, !105 + store v117v1 to v844v1, !105 v846v1 = const u64 3 - v847v1 = get_elem_ptr __ret_value, __ptr bool, v846v1, !89 - store v117v1 to v847v1, !89 + v847v1 = get_elem_ptr __ret_value, __ptr bool, v846v1, !105 + store v117v1 to v847v1, !105 v849v1 = const u64 4 - v850v1 = get_elem_ptr __ret_value, __ptr bool, v849v1, !89 - store v117v1 to v850v1, !89 + v850v1 = get_elem_ptr __ret_value, __ptr bool, v849v1, !105 + store v117v1 to v850v1, !105 v2010v1 = const unit () ret () v2010v1 } - fn big_array_repeat_16(mut __ret_value: __ptr [bool; 25]) -> (), !92 { + fn big_array_repeat_16(mut __ret_value: __ptr [bool; 25]) -> (), !108 { entry(mut __ret_value: __ptr [bool; 25]): v853v1 = const u64 0 br array_init_loop(v853v1) @@ -210,7 +240,7 @@ script { array_init_loop(mut v852v1: u64): v855v1 = get_elem_ptr __ret_value, __ptr bool, v852v1 v125v1 = const bool true - store v125v1 to v855v1, !93 + store v125v1 to v855v1, !109 v857v1 = const u64 1 v858v1 = add v852v1, v857v1 v859v1 = const u64 25 @@ -222,20 +252,20 @@ script { ret () v2017v1 } - fn u8_array_bigger_than_18_bits_17(mut __ret_value: __ptr [u8; 262145]) -> (), !96 { + fn u8_array_bigger_than_18_bits_17(mut __ret_value: __ptr [u8; 262145]) -> (), !112 { entry(mut __ret_value: __ptr [u8; 262145]): - mem_clear_val __ret_value, !97 + mem_clear_val __ret_value, !113 v2024v1 = const unit () ret () v2024v1 } - fn arrays_with_const_length_18() -> (), !100 { + fn arrays_with_const_length_18() -> (), !116 { entry(): v191v1 = const unit () ret () v191v1 } - fn decode_array_19(mut __ret_value: __ptr [u8; 1]) -> (), !103 { + fn decode_array_19(mut __ret_value: __ptr [u8; 1]) -> (), !119 { local slice __anon_00 local [u8; 1] __array_init_0 local slice __ret_val @@ -244,29 +274,29 @@ script { local slice s entry(mut __ret_value: __ptr [u8; 1]): - v247v1 = get_local __ptr [u8; 1], __array_init_0, !104 + v247v1 = get_local __ptr [u8; 1], __array_init_0, !120 v880v1 = const u64 0 - v881v1 = get_elem_ptr v247v1, __ptr u8, v880v1, !104 - v248v1 = const u8 255, !105 - store v248v1 to v881v1, !104 + v881v1 = get_elem_ptr v247v1, __ptr u8, v880v1, !120 + v248v1 = const u8 255, !121 + store v248v1 to v881v1, !120 v2040v1 = get_local __ptr slice, __ret_val v2041v1 = call to_slice_20(v247v1, v2040v1) - v252v1 = get_local __ptr slice, s, !106 + v252v1 = get_local __ptr slice, s, !122 mem_copy_val v252v1, v2040v1 - v1467v1 = get_local __ptr slice, data_, !109 + v1467v1 = get_local __ptr slice, data_, !125 mem_copy_val v1467v1, v252v1 v1922v1 = get_local __ptr slice, __tmp_arg0 mem_copy_val v1922v1, v252v1 - v1924v3 = get_local __ptr slice, __anon_00, !113 + v1924v3 = get_local __ptr slice, __anon_00, !129 mem_copy_val v1924v3, v252v1 - v2087v1 = cast_ptr v1924v3 to __ptr { ptr, u64 }, !113 + v2087v1 = cast_ptr v1924v3 to __ptr { ptr, u64 }, !129 v2074v1 = const u64 0 v2088v1 = get_elem_ptr v2087v1, __ptr ptr, v2074v1 v2089v1 = load v2088v1 v266v1 = const u64 1 - v1652v1 = asm(size: v266v1, src: v2089v1) -> __ptr [u8; 1] hp, !116 { - aloc size, !117 - mcp hp src size, !118 + v1652v1 = asm(size: v266v1, src: v2089v1) -> __ptr [u8; 1] hp, !131 { + aloc size, !132 + mcp hp src size, !133 } v2096v1 = const u64 0 v2097v1 = get_elem_ptr v1652v1, __ptr u8, v2096v1 @@ -278,52 +308,27 @@ script { ret () v2031v1 } - fn to_slice_20(mut array: __ptr [u8; 1], mut __ret_value: __ptr slice) -> (), !121 { + fn to_slice_20(mut array: __ptr [u8; 1], mut __ret_value: __ptr slice) -> (), !136 { local { ptr, u64 } __anon_0 local [u8; 1] array_ entry(array: __ptr [u8; 1], mut __ret_value: __ptr slice): v197v1 = get_local __ptr [u8; 1], array_ mem_copy_val v197v1, array - v242v1 = cast_ptr v197v1 to ptr, !122 - v929v1 = get_local __ptr { ptr, u64 }, __anon_0, !126 + v242v1 = cast_ptr v197v1 to ptr, !137 + v929v1 = get_local __ptr { ptr, u64 }, __anon_0, !141 v883v1 = const u64 0 - v938v1 = get_elem_ptr v929v1, __ptr ptr, v883v1, !127 - store v242v1 to v938v1, !128 + v938v1 = get_elem_ptr v929v1, __ptr ptr, v883v1, !142 + store v242v1 to v938v1, !143 v886v1 = const u64 1 - v940v1 = get_elem_ptr v929v1, __ptr u64, v886v1, !129 - v936v1 = const u64 1, !132 - store v936v1 to v940v1, !133 - v949v1 = cast_ptr v929v1 to __ptr slice, !136 + v940v1 = get_elem_ptr v929v1, __ptr u64, v886v1, !144 + v936v1 = const u64 1, !147 + store v936v1 to v940v1, !148 + v949v1 = cast_ptr v929v1 to __ptr slice, !151 mem_copy_val __ret_value, v949v1 v2038v1 = const unit () ret () v2038v1 } - - pub fn log_47(mut value !138: u8) -> (), !141 { - local { __ptr u8, u64 } __anon_0 - local slice __log_arg - local u8 value_ - - entry(mut value: u8): - v638v1 = get_local __ptr u8, value_ - store value to v638v1 - v1845v1 = get_local __ptr { __ptr u8, u64 }, __anon_0, !144 - v895v1 = const u64 0 - v1848v1 = get_elem_ptr v1845v1, __ptr __ptr u8, v895v1, !145 - store v638v1 to v1848v1, !146 - v898v1 = const u64 1 - v1850v1 = get_elem_ptr v1845v1, __ptr u64, v898v1, !147 - v648v1 = const u64 1 - store v648v1 to v1850v1, !148 - v1855v1 = cast_ptr v1845v1 to __ptr slice, !142 - v2043v1 = get_local __ptr slice, __log_arg - mem_copy_val v2043v1, v1855v1 - v781v1 = const u64 14454674236531057292 - log __ptr slice v2043v1, v781v1 - v785v1 = const unit () - ret () v785v1 - } } !0 = "test/src/e2e_vm_tests/test_programs/should_pass/language/array/array_repeat/src/main..sw" @@ -363,118 +368,121 @@ script { !34 = span !22 1883 1890 !35 = fn_call_path_span !22 1883 1886 !36 = (!20 !21 !34 !35) -!37 = span !22 1900 1907 -!38 = fn_call_path_span !22 1900 1903 -!39 = (!20 !21 !37 !38) -!40 = span !22 1917 1948 -!41 = fn_call_path_span !22 1917 1923 -!42 = "test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-assert/src/revert.sw" -!43 = span !42 757 771 -!44 = (!20 !21 !40 !41 !43) -!45 = span !10 58 117 -!46 = fn_name_span !10 61 87 -!47 = inline "never" -!48 = (!45 !46 !47) -!49 = span !10 107 115 -!50 = span !10 220 282 -!51 = fn_name_span !10 223 250 -!52 = (!50 !51 !47) -!53 = span !10 271 280 -!54 = span !10 725 855 -!55 = fn_name_span !10 728 756 -!56 = (!54 !55 !47) -!57 = span !10 778 853 -!58 = span !10 1030 1156 -!59 = fn_name_span !10 1033 1061 -!60 = (!58 !59 !47) -!61 = span !10 1083 1154 -!62 = span !10 1327 1392 -!63 = fn_name_span !10 1330 1358 -!64 = (!62 !63 !47) -!65 = span !10 1380 1390 -!66 = span !10 135 194 -!67 = fn_name_span !10 138 162 -!68 = (!66 !67 !47) -!69 = span !10 183 192 -!70 = span !10 468 530 -!71 = fn_name_span !10 471 496 -!72 = (!70 !71 !47) -!73 = span !10 518 528 -!74 = span !10 873 1003 -!75 = fn_name_span !10 876 902 -!76 = (!74 !75 !47) -!77 = span !10 925 1001 -!78 = span !10 1174 1300 -!79 = fn_name_span !10 1177 1203 -!80 = (!78 !79 !47) -!81 = span !10 1226 1298 -!82 = span !10 1410 1475 -!83 = fn_name_span !10 1413 1439 -!84 = (!82 !83 !47) -!85 = span !10 1462 1473 -!86 = span !10 1536 1590 -!87 = fn_name_span !10 1539 1557 -!88 = (!86 !87 !47) -!89 = span !10 1579 1588 -!90 = span !10 1633 1687 -!91 = fn_name_span !10 1636 1652 -!92 = (!90 !91 !47) -!93 = span !10 1675 1685 -!94 = span !10 1781 1852 -!95 = fn_name_span !10 1784 1812 -!96 = (!94 !95 !47) -!97 = span !10 1837 1850 -!98 = span !10 1947 2196 -!99 = fn_name_span !10 1950 1974 -!100 = (!98 !99 !47) -!101 = span !10 3070 3173 -!102 = fn_name_span !10 3073 3085 -!103 = (!101 !102 !47) -!104 = span !10 3133 3140 -!105 = span !10 3134 3139 -!106 = span !10 3105 3142 -!107 = span !10 3147 3171 -!108 = fn_call_path_span !10 3147 3157 -!109 = (!107 !108) -!110 = "test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-assert/src/raw_slice.sw" -!111 = span !110 3718 3734 -!112 = fn_call_path_span !110 3718 3728 -!113 = (!111 !112) -!114 = "test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-assert/src/codec.sw" -!115 = span !114 57427 57542 -!116 = (!107 !108 !115) -!117 = span !114 57474 57483 -!118 = span !114 57497 57512 -!119 = span !10 3192 3320 -!120 = fn_name_span !10 3195 3203 -!121 = (!119 !120 !47) -!122 = span !10 3296 3312 -!123 = span !10 3268 3318 -!124 = fn_call_path_span !10 3268 3289 -!125 = span !110 2411 2442 -!126 = (!123 !124 !125) -!127 = (!123 !124 !125) -!128 = (!123 !124 !125) -!129 = (!123 !124 !125) -!130 = span !110 2417 2441 -!131 = fn_call_path_span !110 2423 2424 -!132 = (!123 !124 !130 !131) -!133 = (!123 !124 !125) -!134 = span !110 2400 2443 -!135 = fn_call_path_span !110 2400 2410 -!136 = (!123 !124 !134 !135) -!137 = "test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-assert/src/logging.sw" -!138 = span !137 591 596 -!139 = span !137 577 651 -!140 = fn_name_span !137 584 587 -!141 = (!139 !140) -!142 = span !137 642 647 -!143 = span !114 56610 56622 -!144 = (!142 !143) -!145 = (!142 !143) -!146 = (!142 !143) -!147 = (!142 !143) -!148 = (!142 !143) +!37 = "test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-assert/src/logging.sw" +!38 = span !37 642 647 +!39 = "test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-assert/src/codec.sw" +!40 = span !39 56610 56622 +!41 = (!20 !21 !34 !35 !38 !40) +!42 = (!20 !21 !34 !35 !38 !40) +!43 = (!20 !21 !34 !35 !38 !40) +!44 = (!20 !21 !34 !35 !38 !40) +!45 = (!20 !21 !34 !35 !38 !40) +!46 = (!20 !21 !34 !35 !38) +!47 = span !22 1900 1907 +!48 = fn_call_path_span !22 1900 1903 +!49 = (!20 !21 !47 !48) +!50 = (!20 !21 !47 !48 !38 !40) +!51 = (!20 !21 !47 !48 !38 !40) +!52 = (!20 !21 !47 !48 !38 !40) +!53 = (!20 !21 !47 !48 !38 !40) +!54 = (!20 !21 !47 !48 !38 !40) +!55 = (!20 !21 !47 !48 !38) +!56 = span !22 1917 1948 +!57 = fn_call_path_span !22 1917 1923 +!58 = "test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-assert/src/revert.sw" +!59 = span !58 757 771 +!60 = (!20 !21 !56 !57 !59) +!61 = span !10 58 117 +!62 = fn_name_span !10 61 87 +!63 = inline "never" +!64 = (!61 !62 !63) +!65 = span !10 107 115 +!66 = span !10 220 282 +!67 = fn_name_span !10 223 250 +!68 = (!66 !67 !63) +!69 = span !10 271 280 +!70 = span !10 725 855 +!71 = fn_name_span !10 728 756 +!72 = (!70 !71 !63) +!73 = span !10 778 853 +!74 = span !10 1030 1156 +!75 = fn_name_span !10 1033 1061 +!76 = (!74 !75 !63) +!77 = span !10 1083 1154 +!78 = span !10 1327 1392 +!79 = fn_name_span !10 1330 1358 +!80 = (!78 !79 !63) +!81 = span !10 1380 1390 +!82 = span !10 135 194 +!83 = fn_name_span !10 138 162 +!84 = (!82 !83 !63) +!85 = span !10 183 192 +!86 = span !10 468 530 +!87 = fn_name_span !10 471 496 +!88 = (!86 !87 !63) +!89 = span !10 518 528 +!90 = span !10 873 1003 +!91 = fn_name_span !10 876 902 +!92 = (!90 !91 !63) +!93 = span !10 925 1001 +!94 = span !10 1174 1300 +!95 = fn_name_span !10 1177 1203 +!96 = (!94 !95 !63) +!97 = span !10 1226 1298 +!98 = span !10 1410 1475 +!99 = fn_name_span !10 1413 1439 +!100 = (!98 !99 !63) +!101 = span !10 1462 1473 +!102 = span !10 1536 1590 +!103 = fn_name_span !10 1539 1557 +!104 = (!102 !103 !63) +!105 = span !10 1579 1588 +!106 = span !10 1633 1687 +!107 = fn_name_span !10 1636 1652 +!108 = (!106 !107 !63) +!109 = span !10 1675 1685 +!110 = span !10 1781 1852 +!111 = fn_name_span !10 1784 1812 +!112 = (!110 !111 !63) +!113 = span !10 1837 1850 +!114 = span !10 1947 2196 +!115 = fn_name_span !10 1950 1974 +!116 = (!114 !115 !63) +!117 = span !10 3070 3173 +!118 = fn_name_span !10 3073 3085 +!119 = (!117 !118 !63) +!120 = span !10 3133 3140 +!121 = span !10 3134 3139 +!122 = span !10 3105 3142 +!123 = span !10 3147 3171 +!124 = fn_call_path_span !10 3147 3157 +!125 = (!123 !124) +!126 = "test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-assert/src/raw_slice.sw" +!127 = span !126 3718 3734 +!128 = fn_call_path_span !126 3718 3728 +!129 = (!127 !128) +!130 = span !39 57427 57542 +!131 = (!123 !124 !130) +!132 = span !39 57474 57483 +!133 = span !39 57497 57512 +!134 = span !10 3192 3320 +!135 = fn_name_span !10 3195 3203 +!136 = (!134 !135 !63) +!137 = span !10 3296 3312 +!138 = span !10 3268 3318 +!139 = fn_call_path_span !10 3268 3289 +!140 = span !126 2411 2442 +!141 = (!138 !139 !140) +!142 = (!138 !139 !140) +!143 = (!138 !139 !140) +!144 = (!138 !139 !140) +!145 = span !126 2417 2441 +!146 = fn_call_path_span !126 2423 2424 +!147 = (!138 !139 !145 !146) +!148 = (!138 !139 !140) +!149 = span !126 2400 2443 +!150 = fn_call_path_span !126 2400 2410 +!151 = (!138 !139 !149 !150) ;; ASM: Final program ;; Program kind: Script @@ -491,97 +499,120 @@ cfei i0 ; allocate stack space for globals move $$locbase $sp ; [entry init: __entry]: set locals base register jal $$reta $pc i2 ; [call: main_0]: call function retd $zero $zero ; [entry end: __entry] return slice -pshh i531456 ; [fn init: main_0]: push used high registers 40..64 +pshh i531968 ; [fn init: main_0]: push used high registers 40..64 move $$locbase $sp ; [fn init: main_0]: set locals base register -cfei i264920 ; [fn init: main_0]: allocate: locals 264920 byte(s), call args 0 slot(s) +cfei i265000 ; [fn init: main_0]: allocate: locals 265000 byte(s), call args 0 slot(s) move $r1 $$reta ; [fn init: main_0]: save return address -move $$arg0 $$locbase ; [call: array_repeat_zero_small_u8_1]: pass argument 0 -jal $$reta $pc i87 ; [call: array_repeat_zero_small_u8_1]: call function -addi $r0 $$locbase i8 ; get offset to local __ptr [u64; 5] +addi $r0 $$locbase i64 ; get offset to local __ptr [u8; 5] +move $$arg0 $r0 ; [call: array_repeat_zero_small_u8_1]: pass argument 0 +jal $$reta $pc i109 ; [call: array_repeat_zero_small_u8_1]: call function +addi $r0 $$locbase i72 ; get offset to local __ptr [u64; 5] move $$arg0 $r0 ; [call: array_repeat_zero_small_u16_2]: pass argument 0 -jal $$reta $pc i88 ; [call: array_repeat_zero_small_u16_2]: call function -addi $r0 $$locbase i48 ; get offset to local __ptr [u64; 5] +jal $$reta $pc i110 ; [call: array_repeat_zero_small_u16_2]: call function +addi $r0 $$locbase i112 ; get offset to local __ptr [u64; 5] move $$arg0 $r0 ; [call: array_repeat_zero_small_u16_2]: pass argument 0 -jal $$reta $pc i85 ; [call: array_repeat_zero_small_u16_2]: call function -movi $r0 i32989 ; get word offset to local from base +jal $$reta $pc i107 ; [call: array_repeat_zero_small_u16_2]: call function +movi $r0 i32997 ; get word offset to local from base muli $r0 $r0 i8 ; get byte offset to local from base add $r0 $$locbase $r0 ; get absolute byte offset to local move $$arg0 $r0 ; [call: array_repeat_zero_small_u16_2]: pass argument 0 -jal $$reta $pc i80 ; [call: array_repeat_zero_small_u16_2]: call function -movi $r0 i32994 ; get word offset to local from base +jal $$reta $pc i102 ; [call: array_repeat_zero_small_u16_2]: call function +movi $r0 i33002 ; get word offset to local from base muli $r0 $r0 i8 ; get byte offset to local from base add $r0 $$locbase $r0 ; get absolute byte offset to local move $$arg0 $r0 ; [call: array_repeat_zero_small_u256_5]: pass argument 0 -jal $$reta $pc i79 ; [call: array_repeat_zero_small_u256_5]: call function -movi $r0 i33014 ; get word offset to local from base +jal $$reta $pc i101 ; [call: array_repeat_zero_small_u256_5]: call function +movi $r0 i33022 ; get word offset to local from base muli $r0 $r0 i8 ; get byte offset to local from base add $r0 $$locbase $r0 ; get absolute byte offset to local move $$arg0 $r0 ; [call: array_repeat_zero_small_b256_6]: pass argument 0 -jal $$reta $pc i78 ; [call: array_repeat_zero_small_b256_6]: call function -movi $r0 i33034 ; get word offset to local from base +jal $$reta $pc i100 ; [call: array_repeat_zero_small_b256_6]: call function +movi $r0 i33042 ; get word offset to local from base muli $r0 $r0 i8 ; get byte offset to local from base add $r0 $$locbase $r0 ; get absolute byte offset to local move $$arg0 $r0 ; [call: array_repeat_zero_small_bool_7]: pass argument 0 -jal $$reta $pc i77 ; [call: array_repeat_zero_small_bool_7]: call function -movi $r0 i33035 ; get word offset to local from base +jal $$reta $pc i99 ; [call: array_repeat_zero_small_bool_7]: call function +movi $r0 i33043 ; get word offset to local from base muli $r0 $r0 i8 ; get byte offset to local from base add $r0 $$locbase $r0 ; get absolute byte offset to local move $$arg0 $r0 ; [call: array_repeat_zero_big_u8_8]: pass argument 0 -jal $$reta $pc i76 ; [call: array_repeat_zero_big_u8_8]: call function -movi $r0 i33039 ; get word offset to local from base +jal $$reta $pc i98 ; [call: array_repeat_zero_big_u8_8]: call function +movi $r0 i33047 ; get word offset to local from base muli $r0 $r0 i8 ; get byte offset to local from base add $r0 $$locbase $r0 ; get absolute byte offset to local move $$arg0 $r0 ; [call: array_repeat_zero_big_u32_10]: pass argument 0 -jal $$reta $pc i75 ; [call: array_repeat_zero_big_u32_10]: call function -movi $r0 i33064 ; get word offset to local from base +jal $$reta $pc i97 ; [call: array_repeat_zero_big_u32_10]: call function +movi $r0 i33072 ; get word offset to local from base muli $r0 $r0 i8 ; get byte offset to local from base add $r0 $$locbase $r0 ; get absolute byte offset to local move $$arg0 $r0 ; [call: array_repeat_zero_big_u32_10]: pass argument 0 -jal $$reta $pc i70 ; [call: array_repeat_zero_big_u32_10]: call function -movi $r0 i33089 ; get word offset to local from base +jal $$reta $pc i92 ; [call: array_repeat_zero_big_u32_10]: call function +movi $r0 i33097 ; get word offset to local from base muli $r0 $r0 i8 ; get byte offset to local from base add $r0 $$locbase $r0 ; get absolute byte offset to local move $$arg0 $r0 ; [call: array_repeat_zero_big_u32_10]: pass argument 0 -jal $$reta $pc i65 ; [call: array_repeat_zero_big_u32_10]: call function -addi $r0 $$locbase i88 ; get offset to local __ptr [u256; 25] +jal $$reta $pc i87 ; [call: array_repeat_zero_big_u32_10]: call function +addi $r0 $$locbase i152 ; get offset to local __ptr [u256; 25] move $$arg0 $r0 ; [call: array_repeat_zero_big_u256_12]: pass argument 0 -jal $$reta $pc i66 ; [call: array_repeat_zero_big_u256_12]: call function -addi $r0 $$locbase i888 ; get offset to local __ptr [b256; 25] +jal $$reta $pc i88 ; [call: array_repeat_zero_big_u256_12]: call function +addi $r0 $$locbase i952 ; get offset to local __ptr [b256; 25] move $$arg0 $r0 ; [call: array_repeat_zero_big_b256_13]: pass argument 0 -jal $$reta $pc i67 ; [call: array_repeat_zero_big_b256_13]: call function -addi $r0 $$locbase i1688 ; get offset to local __ptr [bool; 25] +jal $$reta $pc i89 ; [call: array_repeat_zero_big_b256_13]: call function +addi $r0 $$locbase i1752 ; get offset to local __ptr [bool; 25] move $$arg0 $r0 ; [call: array_repeat_zero_big_bool_14]: pass argument 0 -jal $$reta $pc i68 ; [call: array_repeat_zero_big_bool_14]: call function -addi $r0 $$locbase i1720 ; get offset to local __ptr [bool; 5] +jal $$reta $pc i90 ; [call: array_repeat_zero_big_bool_14]: call function +addi $r0 $$locbase i1784 ; get offset to local __ptr [bool; 5] move $$arg0 $r0 ; [call: small_array_repeat_15]: pass argument 0 -jal $$reta $pc i69 ; [call: small_array_repeat_15]: call function -addi $r0 $$locbase i1728 ; get offset to local __ptr [bool; 25] +jal $$reta $pc i91 ; [call: small_array_repeat_15]: call function +addi $r0 $$locbase i1792 ; get offset to local __ptr [bool; 25] move $$arg0 $r0 ; [call: big_array_repeat_16]: pass argument 0 -jal $$reta $pc i78 ; [call: big_array_repeat_16]: call function -addi $r0 $$locbase i1760 ; get offset to local __ptr [u8; 262145] +jal $$reta $pc i100 ; [call: big_array_repeat_16]: call function +addi $r0 $$locbase i1824 ; get offset to local __ptr [u8; 262145] move $$arg0 $r0 ; [call: u8_array_bigger_than_18_bits_17]: pass argument 0 -jal $$reta $pc i85 ; [call: u8_array_bigger_than_18_bits_17]: call function -jal $$reta $pc i89 ; [call: arrays_with_const_length_18]: call function -movi $r0 i33114 ; get word offset to local from base +jal $$reta $pc i107 ; [call: u8_array_bigger_than_18_bits_17]: call function +jal $$reta $pc i111 ; [call: arrays_with_const_length_18]: call function +movi $r0 i33122 ; get word offset to local from base muli $r0 $r0 i8 ; get byte offset to local from base add $r0 $$locbase $r0 ; get absolute byte offset to local move $$arg0 $r0 ; [call: decode_array_19]: pass argument 0 -jal $$reta $pc i87 ; [call: decode_array_19]: call function -lb $r0 $r0 i0 ; load byte -movi $r2 i255 ; initialize constant into register -eq $r2 $r0 $r2 +jal $$reta $pc i109 ; [call: decode_array_19]: call function +lb $r2 $r0 i0 ; load byte +movi $r3 i255 ; initialize constant into register +eq $r2 $r2 $r3 eq $r2 $r2 $zero jnzf $r2 $zero i1 -jmpf $zero i6 -move $$arg0 $r0 ; [call: log_47]: pass argument 0 -jal $$reta $pc i119 ; [call: log_47]: call function -movi $$arg0 i255 ; [call: log_47]: pass argument 0 -jal $$reta $pc i117 ; [call: log_47]: call function +jmpf $zero i28 +movi $r1 i33123 ; get word offset to local from base +muli $r1 $r1 i8 ; get byte offset to local from base +add $r1 $$locbase $r1 ; get absolute byte offset to local +mcpi $r1 $r0 i1 ; copy memory +sw $$locbase $r1 i0 ; store word +sw $$locbase $one i1 ; store word +addi $r0 $$locbase i32 ; get offset to local __ptr slice +mcpi $r0 $$locbase i16 ; copy memory load $r0 data_NonConfigurable_0; load constant from data section +lw $r1 $$locbase i4 ; load slice pointer for logging data +lw $r2 $$locbase i5 ; load slice size for logging data +logd $zero $r0 $r1 $r2 ; log slice +movi $r0 i33124 ; get word offset to local from base +muli $r0 $r0 i8 ; get byte offset to local from base +add $r0 $$locbase $r0 ; get absolute byte offset to local +movi $r1 i255 ; initialize constant into register +sb $r0 $r1 i0 ; store byte +addi $r1 $$locbase i16 ; get offset to local __ptr { __ptr u8, u64 } +sw $$locbase $r0 i2 ; store word +sw $$locbase $one i3 ; store word +addi $r0 $$locbase i48 ; get offset to local __ptr slice +mcpi $r0 $r1 i16 ; copy memory +load $r0 data_NonConfigurable_0; load constant from data section +lw $r1 $$locbase i6 ; load slice pointer for logging data +lw $r2 $$locbase i7 ; load slice size for logging data +logd $zero $r0 $r1 $r2 ; log slice +load $r0 data_NonConfigurable_1; load constant from data section rvrt $r0 -cfsi i264920 ; [fn end: main_0] free: locals 264920 byte(s), call args 0 slot(s) +cfsi i265000 ; [fn end: main_0] free: locals 265000 byte(s), call args 0 slot(s) move $$reta $r1 ; [fn end: main_0] restore return address -poph i531456 ; [fn end: main_0]: restore used high registers 40..64 +poph i531968 ; [fn end: main_0]: restore used high registers 40..64 jal $zero $$reta i0 ; [fn end: main_0] return from call pshh i524288 ; [fn init: array_repeat_zero_small_u8_1]: push used high registers 40..64 mcli $$arg0 i5 ; clear memory [u8; 5], 5 bytes @@ -646,7 +677,7 @@ jnzb $r0 $zero i4 poph i530432 ; [fn end: big_array_repeat_16]: restore used high registers 40..64 jal $zero $$reta i0 ; [fn end: big_array_repeat_16] return from call pshh i524288 ; [fn init: u8_array_bigger_than_18_bits_17]: push used high registers 40..64 -load $$tmp data_NonConfigurable_1; loading clear size in bytes +load $$tmp data_NonConfigurable_2; loading clear size in bytes mcl $$arg0 $$tmp ; clear memory [u8; 262145] poph i524288 ; [fn end: u8_array_bigger_than_18_bits_17]: restore used high registers 40..64 jal $zero $$reta i0 ; [fn end: u8_array_bigger_than_18_bits_17] return from call @@ -656,30 +687,30 @@ jal $zero $$reta i0 ; [fn end: arrays_with_const_length_18] return fro pshh i531968 ; [fn init: decode_array_19]: push used high registers 40..64 move $$locbase $sp ; [fn init: decode_array_19]: set locals base register cfei i88 ; [fn init: decode_array_19]: allocate: locals 88 byte(s), call args 0 slot(s) -move $r1 $$arg0 ; [fn init: decode_array_19]: copy argument 0 (__ret_value) -move $r2 $$reta ; [fn init: decode_array_19]: save return address -addi $r0 $$locbase i16 ; get offset to local __ptr [u8; 1] -movi $r3 i255 ; initialize constant into register -sb $r0 $r3 i0 ; store byte -addi $r3 $$locbase i24 ; get offset to local __ptr slice -move $$arg0 $r0 ; [call: to_slice_20]: pass argument 0 -move $$arg1 $r3 ; [call: to_slice_20]: pass argument 1 +move $r2 $$arg0 ; [fn init: decode_array_19]: copy argument 0 (__ret_value) +move $r3 $$reta ; [fn init: decode_array_19]: save return address +addi $r1 $$locbase i16 ; get offset to local __ptr [u8; 1] +movi $r0 i255 ; initialize constant into register +sb $r1 $r0 i0 ; store byte +addi $r0 $$locbase i24 ; get offset to local __ptr slice +move $$arg0 $r1 ; [call: to_slice_20]: pass argument 0 +move $$arg1 $r0 ; [call: to_slice_20]: pass argument 1 jal $$reta $pc i18 ; [call: to_slice_20]: call function -addi $r0 $$locbase i72 ; get offset to local __ptr slice -mcpi $r0 $r3 i16 ; copy memory -addi $r3 $$locbase i56 ; get offset to local __ptr slice -mcpi $r3 $r0 i16 ; copy memory -addi $r3 $$locbase i40 ; get offset to local __ptr slice -mcpi $r3 $r0 i16 ; copy memory -mcpi $$locbase $r0 i16 ; copy memory +addi $r1 $$locbase i72 ; get offset to local __ptr slice +mcpi $r1 $r0 i16 ; copy memory +addi $r0 $$locbase i56 ; get offset to local __ptr slice +mcpi $r0 $r1 i16 ; copy memory +addi $r0 $$locbase i40 ; get offset to local __ptr slice +mcpi $r0 $r1 i16 ; copy memory +mcpi $$locbase $r1 i16 ; copy memory lw $r0 $$locbase i0 ; load word -movi $r3 i1 ; copy ASM block argument's constant initial value to register +movi $r1 i1 ; copy ASM block argument's constant initial value to register aloc $one ; aloc size -mcp $hp $r0 $r3 ; mcp hp src size +mcp $hp $r0 $r1 ; mcp hp src size lb $r0 $hp i0 ; load byte -sb $r1 $r0 i0 ; store byte +sb $r2 $r0 i0 ; store byte cfsi i88 ; [fn end: decode_array_19] free: locals 88 byte(s), call args 0 slot(s) -move $$reta $r2 ; [fn end: decode_array_19] restore return address +move $$reta $r3 ; [fn end: decode_array_19] restore return address poph i531968 ; [fn end: decode_array_19]: restore used high registers 40..64 jal $zero $$reta i0 ; [fn end: decode_array_19] return from call pshh i528384 ; [fn init: to_slice_20]: push used high registers 40..64 @@ -693,262 +724,252 @@ mcpi $$arg1 $$locbase i16 ; copy memory cfsi i24 ; [fn end: to_slice_20] free: locals 24 byte(s), call args 0 slot(s) poph i528384 ; [fn end: to_slice_20]: restore used high registers 40..64 jal $zero $$reta i0 ; [fn end: to_slice_20] return from call -pshh i531456 ; [fn init: log_47]: push used high registers 40..64 -move $$locbase $sp ; [fn init: log_47]: set locals base register -cfei i40 ; [fn init: log_47]: allocate: locals 40 byte(s), call args 0 slot(s) -addi $r0 $$locbase i32 ; get offset to local __ptr u8 -sb $r0 $$arg0 i0 ; store byte -sw $$locbase $r0 i0 ; store word -sw $$locbase $one i1 ; store word -addi $r0 $$locbase i16 ; get offset to local __ptr slice -mcpi $r0 $$locbase i16 ; copy memory -load $r0 data_NonConfigurable_2; load constant from data section -lw $r1 $$locbase i2 ; load slice pointer for logging data -lw $r2 $$locbase i3 ; load slice size for logging data -logd $zero $r0 $r1 $r2 ; log slice -cfsi i40 ; [fn end: log_47] free: locals 40 byte(s), call args 0 slot(s) -poph i531456 ; [fn end: log_47]: restore used high registers 40..64 -jal $zero $$reta i0 ; [fn end: log_47] return from call .data: -data_NonConfigurable_0 .word 18446744073709486083 -data_NonConfigurable_1 .word 262145 -data_NonConfigurable_2 .word 14454674236531057292 +data_NonConfigurable_0 .word 14454674236531057292 +data_NonConfigurable_1 .word 18446744073709486083 +data_NonConfigurable_2 .word 262145 ;; --- START OF TARGET BYTECODE --- 0x00000000 MOVE R60 $pc ;; [26, 240, 48, 0] 0x00000004 JMPF $zero 0x4 ;; [116, 0, 0, 4] -0x00000008 ;; [0, 0, 0, 0, 0, 0, 3, 152] +0x00000008 ;; [0, 0, 0, 0, 0, 0, 3, 176] 0x00000010 ;; [0, 0, 0, 0, 0, 0, 0, 0] 0x00000018 LW R63 R60 0x1 ;; [93, 255, 192, 1] 0x0000001c ADD R63 R63 R60 ;; [16, 255, 255, 0] 0x00000020 MOVE R59 $sp ;; [26, 236, 80, 0] 0x00000024 JAL R62 $pc 0x2 ;; [153, 248, 48, 2] 0x00000028 RETD $zero $zero ;; [37, 0, 0, 0] -0x0000002c PSHH 0x81c00 ;; [150, 8, 28, 0] +0x0000002c PSHH 0x81e00 ;; [150, 8, 30, 0] 0x00000030 MOVE R59 $sp ;; [26, 236, 80, 0] -0x00000034 CFEI 0x40ad8 ;; [145, 4, 10, 216] +0x00000034 CFEI 0x40b28 ;; [145, 4, 11, 40] 0x00000038 MOVE R51 R62 ;; [26, 207, 224, 0] -0x0000003c MOVE R58 R59 ;; [26, 235, 176, 0] -0x00000040 JAL R62 $pc 0x57 ;; [153, 248, 48, 87] -0x00000044 ADDI R52 R59 0x8 ;; [80, 211, 176, 8] -0x00000048 MOVE R58 R52 ;; [26, 235, 64, 0] -0x0000004c JAL R62 $pc 0x58 ;; [153, 248, 48, 88] -0x00000050 ADDI R52 R59 0x30 ;; [80, 211, 176, 48] -0x00000054 MOVE R58 R52 ;; [26, 235, 64, 0] -0x00000058 JAL R62 $pc 0x55 ;; [153, 248, 48, 85] -0x0000005c MOVI R52 0x80dd ;; [114, 208, 128, 221] -0x00000060 MULI R52 R52 0x8 ;; [85, 211, 64, 8] -0x00000064 ADD R52 R59 R52 ;; [16, 211, 189, 0] -0x00000068 MOVE R58 R52 ;; [26, 235, 64, 0] -0x0000006c JAL R62 $pc 0x50 ;; [153, 248, 48, 80] -0x00000070 MOVI R52 0x80e2 ;; [114, 208, 128, 226] -0x00000074 MULI R52 R52 0x8 ;; [85, 211, 64, 8] -0x00000078 ADD R52 R59 R52 ;; [16, 211, 189, 0] -0x0000007c MOVE R58 R52 ;; [26, 235, 64, 0] -0x00000080 JAL R62 $pc 0x4f ;; [153, 248, 48, 79] -0x00000084 MOVI R52 0x80f6 ;; [114, 208, 128, 246] -0x00000088 MULI R52 R52 0x8 ;; [85, 211, 64, 8] -0x0000008c ADD R52 R59 R52 ;; [16, 211, 189, 0] -0x00000090 MOVE R58 R52 ;; [26, 235, 64, 0] -0x00000094 JAL R62 $pc 0x4e ;; [153, 248, 48, 78] -0x00000098 MOVI R52 0x810a ;; [114, 208, 129, 10] -0x0000009c MULI R52 R52 0x8 ;; [85, 211, 64, 8] -0x000000a0 ADD R52 R59 R52 ;; [16, 211, 189, 0] -0x000000a4 MOVE R58 R52 ;; [26, 235, 64, 0] -0x000000a8 JAL R62 $pc 0x4d ;; [153, 248, 48, 77] -0x000000ac MOVI R52 0x810b ;; [114, 208, 129, 11] -0x000000b0 MULI R52 R52 0x8 ;; [85, 211, 64, 8] -0x000000b4 ADD R52 R59 R52 ;; [16, 211, 189, 0] -0x000000b8 MOVE R58 R52 ;; [26, 235, 64, 0] -0x000000bc JAL R62 $pc 0x4c ;; [153, 248, 48, 76] -0x000000c0 MOVI R52 0x810f ;; [114, 208, 129, 15] -0x000000c4 MULI R52 R52 0x8 ;; [85, 211, 64, 8] -0x000000c8 ADD R52 R59 R52 ;; [16, 211, 189, 0] -0x000000cc MOVE R58 R52 ;; [26, 235, 64, 0] -0x000000d0 JAL R62 $pc 0x4b ;; [153, 248, 48, 75] -0x000000d4 MOVI R52 0x8128 ;; [114, 208, 129, 40] -0x000000d8 MULI R52 R52 0x8 ;; [85, 211, 64, 8] -0x000000dc ADD R52 R59 R52 ;; [16, 211, 189, 0] -0x000000e0 MOVE R58 R52 ;; [26, 235, 64, 0] -0x000000e4 JAL R62 $pc 0x46 ;; [153, 248, 48, 70] -0x000000e8 MOVI R52 0x8141 ;; [114, 208, 129, 65] -0x000000ec MULI R52 R52 0x8 ;; [85, 211, 64, 8] -0x000000f0 ADD R52 R59 R52 ;; [16, 211, 189, 0] -0x000000f4 MOVE R58 R52 ;; [26, 235, 64, 0] -0x000000f8 JAL R62 $pc 0x41 ;; [153, 248, 48, 65] -0x000000fc ADDI R52 R59 0x58 ;; [80, 211, 176, 88] -0x00000100 MOVE R58 R52 ;; [26, 235, 64, 0] -0x00000104 JAL R62 $pc 0x42 ;; [153, 248, 48, 66] -0x00000108 ADDI R52 R59 0x378 ;; [80, 211, 179, 120] -0x0000010c MOVE R58 R52 ;; [26, 235, 64, 0] -0x00000110 JAL R62 $pc 0x43 ;; [153, 248, 48, 67] -0x00000114 ADDI R52 R59 0x698 ;; [80, 211, 182, 152] -0x00000118 MOVE R58 R52 ;; [26, 235, 64, 0] -0x0000011c JAL R62 $pc 0x44 ;; [153, 248, 48, 68] -0x00000120 ADDI R52 R59 0x6b8 ;; [80, 211, 182, 184] -0x00000124 MOVE R58 R52 ;; [26, 235, 64, 0] -0x00000128 JAL R62 $pc 0x45 ;; [153, 248, 48, 69] -0x0000012c ADDI R52 R59 0x6c0 ;; [80, 211, 182, 192] -0x00000130 MOVE R58 R52 ;; [26, 235, 64, 0] -0x00000134 JAL R62 $pc 0x4e ;; [153, 248, 48, 78] -0x00000138 ADDI R52 R59 0x6e0 ;; [80, 211, 182, 224] -0x0000013c MOVE R58 R52 ;; [26, 235, 64, 0] -0x00000140 JAL R62 $pc 0x55 ;; [153, 248, 48, 85] -0x00000144 JAL R62 $pc 0x59 ;; [153, 248, 48, 89] -0x00000148 MOVI R52 0x815a ;; [114, 208, 129, 90] -0x0000014c MULI R52 R52 0x8 ;; [85, 211, 64, 8] -0x00000150 ADD R52 R59 R52 ;; [16, 211, 189, 0] -0x00000154 MOVE R58 R52 ;; [26, 235, 64, 0] -0x00000158 JAL R62 $pc 0x57 ;; [153, 248, 48, 87] -0x0000015c LB R52 R52 0x0 ;; [92, 211, 64, 0] -0x00000160 MOVI R50 0xff ;; [114, 200, 0, 255] -0x00000164 EQ R50 R52 R50 ;; [19, 203, 76, 128] -0x00000168 EQ R50 R50 $zero ;; [19, 203, 32, 0] -0x0000016c JNZF R50 $zero 0x1 ;; [118, 200, 0, 1] -0x00000170 JMPF $zero 0x6 ;; [116, 0, 0, 6] -0x00000174 MOVE R58 R52 ;; [26, 235, 64, 0] -0x00000178 JAL R62 $pc 0x77 ;; [153, 248, 48, 119] -0x0000017c MOVI R58 0xff ;; [114, 232, 0, 255] -0x00000180 JAL R62 $pc 0x75 ;; [153, 248, 48, 117] -0x00000184 LW R52 R63 0x0 ;; [93, 211, 240, 0] -0x00000188 RVRT R52 ;; [54, 208, 0, 0] -0x0000018c CFSI 0x40ad8 ;; [146, 4, 10, 216] -0x00000190 MOVE R62 R51 ;; [26, 251, 48, 0] -0x00000194 POPH 0x81c00 ;; [152, 8, 28, 0] -0x00000198 JAL $zero R62 0x0 ;; [153, 3, 224, 0] -0x0000019c PSHH 0x80000 ;; [150, 8, 0, 0] -0x000001a0 MCLI R58 0x5 ;; [112, 232, 0, 5] -0x000001a4 POPH 0x80000 ;; [152, 8, 0, 0] -0x000001a8 JAL $zero R62 0x0 ;; [153, 3, 224, 0] -0x000001ac PSHH 0x80000 ;; [150, 8, 0, 0] -0x000001b0 MCLI R58 0x28 ;; [112, 232, 0, 40] -0x000001b4 POPH 0x80000 ;; [152, 8, 0, 0] -0x000001b8 JAL $zero R62 0x0 ;; [153, 3, 224, 0] -0x000001bc PSHH 0x80000 ;; [150, 8, 0, 0] -0x000001c0 MCLI R58 0xa0 ;; [112, 232, 0, 160] -0x000001c4 POPH 0x80000 ;; [152, 8, 0, 0] -0x000001c8 JAL $zero R62 0x0 ;; [153, 3, 224, 0] -0x000001cc PSHH 0x80000 ;; [150, 8, 0, 0] -0x000001d0 MCLI R58 0xa0 ;; [112, 232, 0, 160] -0x000001d4 POPH 0x80000 ;; [152, 8, 0, 0] -0x000001d8 JAL $zero R62 0x0 ;; [153, 3, 224, 0] -0x000001dc PSHH 0x80000 ;; [150, 8, 0, 0] -0x000001e0 MCLI R58 0x5 ;; [112, 232, 0, 5] -0x000001e4 POPH 0x80000 ;; [152, 8, 0, 0] -0x000001e8 JAL $zero R62 0x0 ;; [153, 3, 224, 0] -0x000001ec PSHH 0x80000 ;; [150, 8, 0, 0] -0x000001f0 MCLI R58 0x19 ;; [112, 232, 0, 25] -0x000001f4 POPH 0x80000 ;; [152, 8, 0, 0] -0x000001f8 JAL $zero R62 0x0 ;; [153, 3, 224, 0] -0x000001fc PSHH 0x80000 ;; [150, 8, 0, 0] -0x00000200 MCLI R58 0xc8 ;; [112, 232, 0, 200] -0x00000204 POPH 0x80000 ;; [152, 8, 0, 0] -0x00000208 JAL $zero R62 0x0 ;; [153, 3, 224, 0] -0x0000020c PSHH 0x80000 ;; [150, 8, 0, 0] -0x00000210 MCLI R58 0x320 ;; [112, 232, 3, 32] -0x00000214 POPH 0x80000 ;; [152, 8, 0, 0] -0x00000218 JAL $zero R62 0x0 ;; [153, 3, 224, 0] -0x0000021c PSHH 0x80000 ;; [150, 8, 0, 0] -0x00000220 MCLI R58 0x320 ;; [112, 232, 3, 32] -0x00000224 POPH 0x80000 ;; [152, 8, 0, 0] -0x00000228 JAL $zero R62 0x0 ;; [153, 3, 224, 0] -0x0000022c PSHH 0x80000 ;; [150, 8, 0, 0] -0x00000230 MCLI R58 0x19 ;; [112, 232, 0, 25] -0x00000234 POPH 0x80000 ;; [152, 8, 0, 0] -0x00000238 JAL $zero R62 0x0 ;; [153, 3, 224, 0] -0x0000023c PSHH 0x81000 ;; [150, 8, 16, 0] -0x00000240 SB R58 $one 0x0 ;; [94, 232, 16, 0] -0x00000244 ADDI R52 R58 0x1 ;; [80, 211, 160, 1] -0x00000248 SB R52 $one 0x0 ;; [94, 208, 16, 0] -0x0000024c ADDI R52 R58 0x2 ;; [80, 211, 160, 2] -0x00000250 SB R52 $one 0x0 ;; [94, 208, 16, 0] -0x00000254 ADDI R52 R58 0x3 ;; [80, 211, 160, 3] -0x00000258 SB R52 $one 0x0 ;; [94, 208, 16, 0] -0x0000025c ADDI R52 R58 0x4 ;; [80, 211, 160, 4] -0x00000260 SB R52 $one 0x0 ;; [94, 208, 16, 0] -0x00000264 POPH 0x81000 ;; [152, 8, 16, 0] -0x00000268 JAL $zero R62 0x0 ;; [153, 3, 224, 0] -0x0000026c PSHH 0x81800 ;; [150, 8, 24, 0] -0x00000270 MOVI R51 0x0 ;; [114, 204, 0, 0] -0x00000274 ADD R52 R58 R51 ;; [16, 211, 172, 192] -0x00000278 SB R52 $one 0x0 ;; [94, 208, 16, 0] -0x0000027c ADDI R51 R51 0x1 ;; [80, 207, 48, 1] -0x00000280 MOVI R52 0x19 ;; [114, 208, 0, 25] -0x00000284 LT R52 R51 R52 ;; [22, 211, 61, 0] -0x00000288 JNZB R52 $zero 0x4 ;; [119, 208, 0, 4] -0x0000028c POPH 0x81800 ;; [152, 8, 24, 0] -0x00000290 JAL $zero R62 0x0 ;; [153, 3, 224, 0] -0x00000294 PSHH 0x80000 ;; [150, 8, 0, 0] -0x00000298 LW R60 R63 0x1 ;; [93, 243, 240, 1] -0x0000029c MCL R58 R60 ;; [39, 235, 192, 0] -0x000002a0 POPH 0x80000 ;; [152, 8, 0, 0] -0x000002a4 JAL $zero R62 0x0 ;; [153, 3, 224, 0] -0x000002a8 PSHH 0x80000 ;; [150, 8, 0, 0] -0x000002ac POPH 0x80000 ;; [152, 8, 0, 0] -0x000002b0 JAL $zero R62 0x0 ;; [153, 3, 224, 0] -0x000002b4 PSHH 0x81e00 ;; [150, 8, 30, 0] -0x000002b8 MOVE R59 $sp ;; [26, 236, 80, 0] -0x000002bc CFEI 0x58 ;; [145, 0, 0, 88] -0x000002c0 MOVE R51 R58 ;; [26, 207, 160, 0] -0x000002c4 MOVE R50 R62 ;; [26, 203, 224, 0] -0x000002c8 ADDI R52 R59 0x10 ;; [80, 211, 176, 16] -0x000002cc MOVI R49 0xff ;; [114, 196, 0, 255] -0x000002d0 SB R52 R49 0x0 ;; [94, 211, 16, 0] -0x000002d4 ADDI R49 R59 0x18 ;; [80, 199, 176, 24] -0x000002d8 MOVE R58 R52 ;; [26, 235, 64, 0] -0x000002dc MOVE R57 R49 ;; [26, 231, 16, 0] -0x000002e0 JAL R62 $pc 0x12 ;; [153, 248, 48, 18] -0x000002e4 ADDI R52 R59 0x48 ;; [80, 211, 176, 72] -0x000002e8 MCPI R52 R49 0x10 ;; [96, 211, 16, 16] -0x000002ec ADDI R49 R59 0x38 ;; [80, 199, 176, 56] -0x000002f0 MCPI R49 R52 0x10 ;; [96, 199, 64, 16] -0x000002f4 ADDI R49 R59 0x28 ;; [80, 199, 176, 40] -0x000002f8 MCPI R49 R52 0x10 ;; [96, 199, 64, 16] -0x000002fc MCPI R59 R52 0x10 ;; [96, 239, 64, 16] -0x00000300 LW R52 R59 0x0 ;; [93, 211, 176, 0] -0x00000304 MOVI R49 0x1 ;; [114, 196, 0, 1] -0x00000308 ALOC $one ;; [38, 4, 0, 0] -0x0000030c MCP $hp R52 R49 ;; [40, 31, 76, 64] -0x00000310 LB R52 $hp 0x0 ;; [92, 208, 112, 0] -0x00000314 SB R51 R52 0x0 ;; [94, 207, 64, 0] -0x00000318 CFSI 0x58 ;; [146, 0, 0, 88] -0x0000031c MOVE R62 R50 ;; [26, 251, 32, 0] -0x00000320 POPH 0x81e00 ;; [152, 8, 30, 0] -0x00000324 JAL $zero R62 0x0 ;; [153, 3, 224, 0] -0x00000328 PSHH 0x81000 ;; [150, 8, 16, 0] -0x0000032c MOVE R59 $sp ;; [26, 236, 80, 0] -0x00000330 CFEI 0x18 ;; [145, 0, 0, 24] -0x00000334 ADDI R52 R59 0x10 ;; [80, 211, 176, 16] -0x00000338 MCPI R52 R58 0x1 ;; [96, 211, 160, 1] -0x0000033c SW R59 R52 0x0 ;; [95, 239, 64, 0] -0x00000340 SW R59 $one 0x1 ;; [95, 236, 16, 1] -0x00000344 MCPI R57 R59 0x10 ;; [96, 231, 176, 16] -0x00000348 CFSI 0x18 ;; [146, 0, 0, 24] -0x0000034c POPH 0x81000 ;; [152, 8, 16, 0] -0x00000350 JAL $zero R62 0x0 ;; [153, 3, 224, 0] -0x00000354 PSHH 0x81c00 ;; [150, 8, 28, 0] -0x00000358 MOVE R59 $sp ;; [26, 236, 80, 0] -0x0000035c CFEI 0x28 ;; [145, 0, 0, 40] -0x00000360 ADDI R52 R59 0x20 ;; [80, 211, 176, 32] -0x00000364 SB R52 R58 0x0 ;; [94, 211, 160, 0] -0x00000368 SW R59 R52 0x0 ;; [95, 239, 64, 0] -0x0000036c SW R59 $one 0x1 ;; [95, 236, 16, 1] -0x00000370 ADDI R52 R59 0x10 ;; [80, 211, 176, 16] -0x00000374 MCPI R52 R59 0x10 ;; [96, 211, 176, 16] -0x00000378 LW R52 R63 0x2 ;; [93, 211, 240, 2] -0x0000037c LW R51 R59 0x2 ;; [93, 207, 176, 2] -0x00000380 LW R50 R59 0x3 ;; [93, 203, 176, 3] -0x00000384 LOGD $zero R52 R51 R50 ;; [52, 3, 76, 242] -0x00000388 CFSI 0x28 ;; [146, 0, 0, 40] -0x0000038c POPH 0x81c00 ;; [152, 8, 28, 0] -0x00000390 JAL $zero R62 0x0 ;; [153, 3, 224, 0] -0x00000394 NOOP ;; [71, 0, 0, 0] +0x0000003c ADDI R52 R59 0x40 ;; [80, 211, 176, 64] +0x00000040 MOVE R58 R52 ;; [26, 235, 64, 0] +0x00000044 JAL R62 $pc 0x6d ;; [153, 248, 48, 109] +0x00000048 ADDI R52 R59 0x48 ;; [80, 211, 176, 72] +0x0000004c MOVE R58 R52 ;; [26, 235, 64, 0] +0x00000050 JAL R62 $pc 0x6e ;; [153, 248, 48, 110] +0x00000054 ADDI R52 R59 0x70 ;; [80, 211, 176, 112] +0x00000058 MOVE R58 R52 ;; [26, 235, 64, 0] +0x0000005c JAL R62 $pc 0x6b ;; [153, 248, 48, 107] +0x00000060 MOVI R52 0x80e5 ;; [114, 208, 128, 229] +0x00000064 MULI R52 R52 0x8 ;; [85, 211, 64, 8] +0x00000068 ADD R52 R59 R52 ;; [16, 211, 189, 0] +0x0000006c MOVE R58 R52 ;; [26, 235, 64, 0] +0x00000070 JAL R62 $pc 0x66 ;; [153, 248, 48, 102] +0x00000074 MOVI R52 0x80ea ;; [114, 208, 128, 234] +0x00000078 MULI R52 R52 0x8 ;; [85, 211, 64, 8] +0x0000007c ADD R52 R59 R52 ;; [16, 211, 189, 0] +0x00000080 MOVE R58 R52 ;; [26, 235, 64, 0] +0x00000084 JAL R62 $pc 0x65 ;; [153, 248, 48, 101] +0x00000088 MOVI R52 0x80fe ;; [114, 208, 128, 254] +0x0000008c MULI R52 R52 0x8 ;; [85, 211, 64, 8] +0x00000090 ADD R52 R59 R52 ;; [16, 211, 189, 0] +0x00000094 MOVE R58 R52 ;; [26, 235, 64, 0] +0x00000098 JAL R62 $pc 0x64 ;; [153, 248, 48, 100] +0x0000009c MOVI R52 0x8112 ;; [114, 208, 129, 18] +0x000000a0 MULI R52 R52 0x8 ;; [85, 211, 64, 8] +0x000000a4 ADD R52 R59 R52 ;; [16, 211, 189, 0] +0x000000a8 MOVE R58 R52 ;; [26, 235, 64, 0] +0x000000ac JAL R62 $pc 0x63 ;; [153, 248, 48, 99] +0x000000b0 MOVI R52 0x8113 ;; [114, 208, 129, 19] +0x000000b4 MULI R52 R52 0x8 ;; [85, 211, 64, 8] +0x000000b8 ADD R52 R59 R52 ;; [16, 211, 189, 0] +0x000000bc MOVE R58 R52 ;; [26, 235, 64, 0] +0x000000c0 JAL R62 $pc 0x62 ;; [153, 248, 48, 98] +0x000000c4 MOVI R52 0x8117 ;; [114, 208, 129, 23] +0x000000c8 MULI R52 R52 0x8 ;; [85, 211, 64, 8] +0x000000cc ADD R52 R59 R52 ;; [16, 211, 189, 0] +0x000000d0 MOVE R58 R52 ;; [26, 235, 64, 0] +0x000000d4 JAL R62 $pc 0x61 ;; [153, 248, 48, 97] +0x000000d8 MOVI R52 0x8130 ;; [114, 208, 129, 48] +0x000000dc MULI R52 R52 0x8 ;; [85, 211, 64, 8] +0x000000e0 ADD R52 R59 R52 ;; [16, 211, 189, 0] +0x000000e4 MOVE R58 R52 ;; [26, 235, 64, 0] +0x000000e8 JAL R62 $pc 0x5c ;; [153, 248, 48, 92] +0x000000ec MOVI R52 0x8149 ;; [114, 208, 129, 73] +0x000000f0 MULI R52 R52 0x8 ;; [85, 211, 64, 8] +0x000000f4 ADD R52 R59 R52 ;; [16, 211, 189, 0] +0x000000f8 MOVE R58 R52 ;; [26, 235, 64, 0] +0x000000fc JAL R62 $pc 0x57 ;; [153, 248, 48, 87] +0x00000100 ADDI R52 R59 0x98 ;; [80, 211, 176, 152] +0x00000104 MOVE R58 R52 ;; [26, 235, 64, 0] +0x00000108 JAL R62 $pc 0x58 ;; [153, 248, 48, 88] +0x0000010c ADDI R52 R59 0x3b8 ;; [80, 211, 179, 184] +0x00000110 MOVE R58 R52 ;; [26, 235, 64, 0] +0x00000114 JAL R62 $pc 0x59 ;; [153, 248, 48, 89] +0x00000118 ADDI R52 R59 0x6d8 ;; [80, 211, 182, 216] +0x0000011c MOVE R58 R52 ;; [26, 235, 64, 0] +0x00000120 JAL R62 $pc 0x5a ;; [153, 248, 48, 90] +0x00000124 ADDI R52 R59 0x6f8 ;; [80, 211, 182, 248] +0x00000128 MOVE R58 R52 ;; [26, 235, 64, 0] +0x0000012c JAL R62 $pc 0x5b ;; [153, 248, 48, 91] +0x00000130 ADDI R52 R59 0x700 ;; [80, 211, 183, 0] +0x00000134 MOVE R58 R52 ;; [26, 235, 64, 0] +0x00000138 JAL R62 $pc 0x64 ;; [153, 248, 48, 100] +0x0000013c ADDI R52 R59 0x720 ;; [80, 211, 183, 32] +0x00000140 MOVE R58 R52 ;; [26, 235, 64, 0] +0x00000144 JAL R62 $pc 0x6b ;; [153, 248, 48, 107] +0x00000148 JAL R62 $pc 0x6f ;; [153, 248, 48, 111] +0x0000014c MOVI R52 0x8162 ;; [114, 208, 129, 98] +0x00000150 MULI R52 R52 0x8 ;; [85, 211, 64, 8] +0x00000154 ADD R52 R59 R52 ;; [16, 211, 189, 0] +0x00000158 MOVE R58 R52 ;; [26, 235, 64, 0] +0x0000015c JAL R62 $pc 0x6d ;; [153, 248, 48, 109] +0x00000160 LB R50 R52 0x0 ;; [92, 203, 64, 0] +0x00000164 MOVI R49 0xff ;; [114, 196, 0, 255] +0x00000168 EQ R50 R50 R49 ;; [19, 203, 44, 64] +0x0000016c EQ R50 R50 $zero ;; [19, 203, 32, 0] +0x00000170 JNZF R50 $zero 0x1 ;; [118, 200, 0, 1] +0x00000174 JMPF $zero 0x1c ;; [116, 0, 0, 28] +0x00000178 MOVI R51 0x8163 ;; [114, 204, 129, 99] +0x0000017c MULI R51 R51 0x8 ;; [85, 207, 48, 8] +0x00000180 ADD R51 R59 R51 ;; [16, 207, 188, 192] +0x00000184 MCPI R51 R52 0x1 ;; [96, 207, 64, 1] +0x00000188 SW R59 R51 0x0 ;; [95, 239, 48, 0] +0x0000018c SW R59 $one 0x1 ;; [95, 236, 16, 1] +0x00000190 ADDI R52 R59 0x20 ;; [80, 211, 176, 32] +0x00000194 MCPI R52 R59 0x10 ;; [96, 211, 176, 16] +0x00000198 LW R52 R63 0x0 ;; [93, 211, 240, 0] +0x0000019c LW R51 R59 0x4 ;; [93, 207, 176, 4] +0x000001a0 LW R50 R59 0x5 ;; [93, 203, 176, 5] +0x000001a4 LOGD $zero R52 R51 R50 ;; [52, 3, 76, 242] +0x000001a8 MOVI R52 0x8164 ;; [114, 208, 129, 100] +0x000001ac MULI R52 R52 0x8 ;; [85, 211, 64, 8] +0x000001b0 ADD R52 R59 R52 ;; [16, 211, 189, 0] +0x000001b4 MOVI R51 0xff ;; [114, 204, 0, 255] +0x000001b8 SB R52 R51 0x0 ;; [94, 211, 48, 0] +0x000001bc ADDI R51 R59 0x10 ;; [80, 207, 176, 16] +0x000001c0 SW R59 R52 0x2 ;; [95, 239, 64, 2] +0x000001c4 SW R59 $one 0x3 ;; [95, 236, 16, 3] +0x000001c8 ADDI R52 R59 0x30 ;; [80, 211, 176, 48] +0x000001cc MCPI R52 R51 0x10 ;; [96, 211, 48, 16] +0x000001d0 LW R52 R63 0x0 ;; [93, 211, 240, 0] +0x000001d4 LW R51 R59 0x6 ;; [93, 207, 176, 6] +0x000001d8 LW R50 R59 0x7 ;; [93, 203, 176, 7] +0x000001dc LOGD $zero R52 R51 R50 ;; [52, 3, 76, 242] +0x000001e0 LW R52 R63 0x1 ;; [93, 211, 240, 1] +0x000001e4 RVRT R52 ;; [54, 208, 0, 0] +0x000001e8 CFSI 0x40b28 ;; [146, 4, 11, 40] +0x000001ec MOVE R62 R51 ;; [26, 251, 48, 0] +0x000001f0 POPH 0x81e00 ;; [152, 8, 30, 0] +0x000001f4 JAL $zero R62 0x0 ;; [153, 3, 224, 0] +0x000001f8 PSHH 0x80000 ;; [150, 8, 0, 0] +0x000001fc MCLI R58 0x5 ;; [112, 232, 0, 5] +0x00000200 POPH 0x80000 ;; [152, 8, 0, 0] +0x00000204 JAL $zero R62 0x0 ;; [153, 3, 224, 0] +0x00000208 PSHH 0x80000 ;; [150, 8, 0, 0] +0x0000020c MCLI R58 0x28 ;; [112, 232, 0, 40] +0x00000210 POPH 0x80000 ;; [152, 8, 0, 0] +0x00000214 JAL $zero R62 0x0 ;; [153, 3, 224, 0] +0x00000218 PSHH 0x80000 ;; [150, 8, 0, 0] +0x0000021c MCLI R58 0xa0 ;; [112, 232, 0, 160] +0x00000220 POPH 0x80000 ;; [152, 8, 0, 0] +0x00000224 JAL $zero R62 0x0 ;; [153, 3, 224, 0] +0x00000228 PSHH 0x80000 ;; [150, 8, 0, 0] +0x0000022c MCLI R58 0xa0 ;; [112, 232, 0, 160] +0x00000230 POPH 0x80000 ;; [152, 8, 0, 0] +0x00000234 JAL $zero R62 0x0 ;; [153, 3, 224, 0] +0x00000238 PSHH 0x80000 ;; [150, 8, 0, 0] +0x0000023c MCLI R58 0x5 ;; [112, 232, 0, 5] +0x00000240 POPH 0x80000 ;; [152, 8, 0, 0] +0x00000244 JAL $zero R62 0x0 ;; [153, 3, 224, 0] +0x00000248 PSHH 0x80000 ;; [150, 8, 0, 0] +0x0000024c MCLI R58 0x19 ;; [112, 232, 0, 25] +0x00000250 POPH 0x80000 ;; [152, 8, 0, 0] +0x00000254 JAL $zero R62 0x0 ;; [153, 3, 224, 0] +0x00000258 PSHH 0x80000 ;; [150, 8, 0, 0] +0x0000025c MCLI R58 0xc8 ;; [112, 232, 0, 200] +0x00000260 POPH 0x80000 ;; [152, 8, 0, 0] +0x00000264 JAL $zero R62 0x0 ;; [153, 3, 224, 0] +0x00000268 PSHH 0x80000 ;; [150, 8, 0, 0] +0x0000026c MCLI R58 0x320 ;; [112, 232, 3, 32] +0x00000270 POPH 0x80000 ;; [152, 8, 0, 0] +0x00000274 JAL $zero R62 0x0 ;; [153, 3, 224, 0] +0x00000278 PSHH 0x80000 ;; [150, 8, 0, 0] +0x0000027c MCLI R58 0x320 ;; [112, 232, 3, 32] +0x00000280 POPH 0x80000 ;; [152, 8, 0, 0] +0x00000284 JAL $zero R62 0x0 ;; [153, 3, 224, 0] +0x00000288 PSHH 0x80000 ;; [150, 8, 0, 0] +0x0000028c MCLI R58 0x19 ;; [112, 232, 0, 25] +0x00000290 POPH 0x80000 ;; [152, 8, 0, 0] +0x00000294 JAL $zero R62 0x0 ;; [153, 3, 224, 0] +0x00000298 PSHH 0x81000 ;; [150, 8, 16, 0] +0x0000029c SB R58 $one 0x0 ;; [94, 232, 16, 0] +0x000002a0 ADDI R52 R58 0x1 ;; [80, 211, 160, 1] +0x000002a4 SB R52 $one 0x0 ;; [94, 208, 16, 0] +0x000002a8 ADDI R52 R58 0x2 ;; [80, 211, 160, 2] +0x000002ac SB R52 $one 0x0 ;; [94, 208, 16, 0] +0x000002b0 ADDI R52 R58 0x3 ;; [80, 211, 160, 3] +0x000002b4 SB R52 $one 0x0 ;; [94, 208, 16, 0] +0x000002b8 ADDI R52 R58 0x4 ;; [80, 211, 160, 4] +0x000002bc SB R52 $one 0x0 ;; [94, 208, 16, 0] +0x000002c0 POPH 0x81000 ;; [152, 8, 16, 0] +0x000002c4 JAL $zero R62 0x0 ;; [153, 3, 224, 0] +0x000002c8 PSHH 0x81800 ;; [150, 8, 24, 0] +0x000002cc MOVI R51 0x0 ;; [114, 204, 0, 0] +0x000002d0 ADD R52 R58 R51 ;; [16, 211, 172, 192] +0x000002d4 SB R52 $one 0x0 ;; [94, 208, 16, 0] +0x000002d8 ADDI R51 R51 0x1 ;; [80, 207, 48, 1] +0x000002dc MOVI R52 0x19 ;; [114, 208, 0, 25] +0x000002e0 LT R52 R51 R52 ;; [22, 211, 61, 0] +0x000002e4 JNZB R52 $zero 0x4 ;; [119, 208, 0, 4] +0x000002e8 POPH 0x81800 ;; [152, 8, 24, 0] +0x000002ec JAL $zero R62 0x0 ;; [153, 3, 224, 0] +0x000002f0 PSHH 0x80000 ;; [150, 8, 0, 0] +0x000002f4 LW R60 R63 0x2 ;; [93, 243, 240, 2] +0x000002f8 MCL R58 R60 ;; [39, 235, 192, 0] +0x000002fc POPH 0x80000 ;; [152, 8, 0, 0] +0x00000300 JAL $zero R62 0x0 ;; [153, 3, 224, 0] +0x00000304 PSHH 0x80000 ;; [150, 8, 0, 0] +0x00000308 POPH 0x80000 ;; [152, 8, 0, 0] +0x0000030c JAL $zero R62 0x0 ;; [153, 3, 224, 0] +0x00000310 PSHH 0x81e00 ;; [150, 8, 30, 0] +0x00000314 MOVE R59 $sp ;; [26, 236, 80, 0] +0x00000318 CFEI 0x58 ;; [145, 0, 0, 88] +0x0000031c MOVE R50 R58 ;; [26, 203, 160, 0] +0x00000320 MOVE R49 R62 ;; [26, 199, 224, 0] +0x00000324 ADDI R51 R59 0x10 ;; [80, 207, 176, 16] +0x00000328 MOVI R52 0xff ;; [114, 208, 0, 255] +0x0000032c SB R51 R52 0x0 ;; [94, 207, 64, 0] +0x00000330 ADDI R52 R59 0x18 ;; [80, 211, 176, 24] +0x00000334 MOVE R58 R51 ;; [26, 235, 48, 0] +0x00000338 MOVE R57 R52 ;; [26, 231, 64, 0] +0x0000033c JAL R62 $pc 0x12 ;; [153, 248, 48, 18] +0x00000340 ADDI R51 R59 0x48 ;; [80, 207, 176, 72] +0x00000344 MCPI R51 R52 0x10 ;; [96, 207, 64, 16] +0x00000348 ADDI R52 R59 0x38 ;; [80, 211, 176, 56] +0x0000034c MCPI R52 R51 0x10 ;; [96, 211, 48, 16] +0x00000350 ADDI R52 R59 0x28 ;; [80, 211, 176, 40] +0x00000354 MCPI R52 R51 0x10 ;; [96, 211, 48, 16] +0x00000358 MCPI R59 R51 0x10 ;; [96, 239, 48, 16] +0x0000035c LW R52 R59 0x0 ;; [93, 211, 176, 0] +0x00000360 MOVI R51 0x1 ;; [114, 204, 0, 1] +0x00000364 ALOC $one ;; [38, 4, 0, 0] +0x00000368 MCP $hp R52 R51 ;; [40, 31, 76, 192] +0x0000036c LB R52 $hp 0x0 ;; [92, 208, 112, 0] +0x00000370 SB R50 R52 0x0 ;; [94, 203, 64, 0] +0x00000374 CFSI 0x58 ;; [146, 0, 0, 88] +0x00000378 MOVE R62 R49 ;; [26, 251, 16, 0] +0x0000037c POPH 0x81e00 ;; [152, 8, 30, 0] +0x00000380 JAL $zero R62 0x0 ;; [153, 3, 224, 0] +0x00000384 PSHH 0x81000 ;; [150, 8, 16, 0] +0x00000388 MOVE R59 $sp ;; [26, 236, 80, 0] +0x0000038c CFEI 0x18 ;; [145, 0, 0, 24] +0x00000390 ADDI R52 R59 0x10 ;; [80, 211, 176, 16] +0x00000394 MCPI R52 R58 0x1 ;; [96, 211, 160, 1] +0x00000398 SW R59 R52 0x0 ;; [95, 239, 64, 0] +0x0000039c SW R59 $one 0x1 ;; [95, 236, 16, 1] +0x000003a0 MCPI R57 R59 0x10 ;; [96, 231, 176, 16] +0x000003a4 CFSI 0x18 ;; [146, 0, 0, 24] +0x000003a8 POPH 0x81000 ;; [152, 8, 16, 0] +0x000003ac JAL $zero R62 0x0 ;; [153, 3, 224, 0] .data_section: -0x00000398 .word i18446744073709486083, as hex be bytes ([FF, FF, FF, FF, FF, FF, 00, 03]) -0x000003a0 .word i262145, as hex be bytes ([00, 00, 00, 00, 00, 04, 00, 01]) -0x000003a8 .word i14454674236531057292, as hex be bytes ([C8, 99, 51, A2, 4C, 6C, A2, 8C]) +0x000003b0 .word i14454674236531057292, as hex be bytes ([C8, 99, 51, A2, 4C, 6C, A2, 8C]) +0x000003b8 .word i18446744073709486083, as hex be bytes ([FF, FF, FF, FF, FF, FF, 00, 03]) +0x000003c0 .word i262145, as hex be bytes ([00, 00, 00, 00, 00, 04, 00, 01]) ;; --- END OF TARGET BYTECODE --- warning @@ -1048,7 +1069,7 @@ warning ____ Compiled script "array_repeat" with 8 warnings. - Finished release [optimized + fuel] target(s) [944 B] in ??? + Finished release [optimized + fuel] target(s) [968 B] in ??? > forc test --path test/src/e2e_vm_tests/test_programs/should_pass/language/array/array_repeat --verbose --release exit status: 0 @@ -1056,10 +1077,10 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/language/array/array_repeat Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-assert) Compiling script array_repeat (test/src/e2e_vm_tests/test_programs/should_pass/language/array/array_repeat) - Finished release [optimized + fuel] target(s) [1.944 KB] in ??? + Finished release [optimized + fuel] target(s) [1.968 KB] in ??? script array_repeat - Bytecode size: 1944 bytes (1.944 KB) - Bytecode hash: 0xd84e1f0af96e64ef4c4c098c44c52e6494d47aa0b5eee14850b62bbde99640fb + Bytecode size: 1968 bytes (1.968 KB) + Bytecode hash: 0xcdf04eeb3632661aefceadc092ae5c25d5a2ea82c21b39f093f281a85524bd1f Running 1 test, filtered 0 tests tested -- array_repeat diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/const_generics/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/const_generics/stdout.snap index 8547ceb51b8..56907d3ef45 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/const_generics/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/const_generics/stdout.snap @@ -35,12 +35,12 @@ warning ____ Compiled script "const_generics" with 2 warnings. - Finished debug [unoptimized + fuel] target(s) [8.816 KB] in ??? + Finished debug [unoptimized + fuel] target(s) [8.808 KB] in ??? Running 1 test, filtered 0 tests tested -- const_generics - test run_main ... ok (???, 17769 gas) + test run_main ... ok (???, 17766 gas) debug output: [src/main.sw:154:13] a = [1, 2] [src/main.sw:158:13] [C {}].len() = 1 diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg/stdout.snap index 334dfb25e7f..08a0d5051fb 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg/stdout.snap @@ -76,7 +76,7 @@ output: tested -- dbg - test call_main ... ok (???, 117840 gas) + test call_main ... ok (???, 110115 gas) debug output: [src/main.sw:13:13] () = () [src/main.sw:15:13] true = true diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg_release/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg_release/stdout.snap index f037cb43833..850eaf4ff91 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg_release/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg_release/stdout.snap @@ -25,7 +25,11 @@ ecal $r0 $r1 $zero $zero ; ecal id fd zero zero ecal $r0 $r1 $zero $zero ; ecal id fd zero zero ecal $r2 $r3 $r0 $r1 ; ecal id fd buf count ecal $r0 $r1 $zero $zero ; ecal id fd zero zero +ecal $r5 $r6 $r3 $one ; ecal id fd buf count +ecal $r2 $r3 $r0 $one ; ecal id fd buf count ecal $r0 $r2 $zero $zero ; ecal id fd zero zero +ecal $r5 $r6 $r3 $one ; ecal id fd buf count +ecal $r2 $r3 $r0 $one ; ecal id fd buf count ecal $r0 $r2 $zero $zero ; ecal id fd zero zero ecal $r0 $r2 $zero $zero ; ecal id fd zero zero ecal $r0 $r1 $zero $zero ; ecal id fd zero zero @@ -35,5 +39,3 @@ ecal $r0 $r2 $zero $zero ; ecal id fd zero zero ecal $r0 $r1 $zero $zero ; ecal id fd zero zero ecal $r2 $r3 $r0 $r1 ; ecal id fd buf count ecal $r2 $r3 $r0 $r1 ; ecal id fd buf count -ecal $r3 $r4 $$locbase $one ; ecal id fd buf count -ecal $r1 $r3 $r0 $one ; ecal id fd buf count diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/logging/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/logging/stdout.snap index 85196b254ba..e78a0d53cda 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/logging/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/logging/stdout.snap @@ -389,7 +389,6 @@ script { local mut { ptr, u64, u64 } __aggr_memcpy_07 local mut { u64, u64 } __aggr_memcpy_08 local mut slice __aggr_memcpy_09 - local { __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, u64 } __anon_0 local { ptr, u64, u64 } __anon_00 local { ptr, u64, u64 } __anon_000 local { ptr, u64, u64 } __anon_01 @@ -424,7 +423,6 @@ script { local { { ptr, u64, u64 } } __tmp_arg0 local { { ptr, u64, u64 } } __tmp_arg1 local slice __tmp_block_arg - local { __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, u64 } __tuple_init_0 local { ptr, u64 } __tuple_init_00 local { { ptr, u64, u64 } } buffer local { { ptr, u64, u64 } } buffer_ @@ -453,399 +451,359 @@ script { entry(item: __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }): v494v1 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, item_ mem_copy_val v494v1, item - v2807v1 = const bool false, !167 - cbr v2807v1, encode_allow_alias_22_is_encode_trivial_23_is_encode_trivial_24_block8(), encode_allow_alias_22_is_encode_trivial_23_is_encode_trivial_24_block9(v2807v1), !169 - - encode_allow_alias_22_is_encode_trivial_23_is_encode_trivial_24_block8(): - v532v1 = const bool false, !170 - br encode_allow_alias_22_is_encode_trivial_23_is_encode_trivial_24_block9(v532v1), !171 - - encode_allow_alias_22_is_encode_trivial_23_is_encode_trivial_24_block9(mut v2771v1: bool): - cbr v2771v1, encode_allow_alias_22_is_encode_trivial_23_is_encode_trivial_24_block10(), encode_allow_alias_22_is_encode_trivial_23_is_encode_trivial_24_block11(v2771v1), !173 - - encode_allow_alias_22_is_encode_trivial_23_is_encode_trivial_24_block10(): - br encode_allow_alias_22_is_encode_trivial_23_is_encode_trivial_24_block11(v532v1), !174 - - encode_allow_alias_22_is_encode_trivial_23_is_encode_trivial_24_block11(mut v2774v1: bool): - cbr v2774v1, encode_allow_alias_22_is_encode_trivial_23_is_encode_trivial_24_block12(), encode_allow_alias_22_is_encode_trivial_23_is_encode_trivial_24_block13(v2774v1), !176 - - encode_allow_alias_22_is_encode_trivial_23_is_encode_trivial_24_block12(): - v524v1 = const bool true, !177 - br encode_allow_alias_22_is_encode_trivial_23_is_encode_trivial_24_block13(v524v1), !178 - - encode_allow_alias_22_is_encode_trivial_23_is_encode_trivial_24_block13(mut v2777v1: bool): - cbr v2777v1, encode_allow_alias_22_block0(), encode_allow_alias_22_block1(), !179 - - encode_allow_alias_22_block0(): - v3216v1 = get_local __ptr { __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, u64 }, __tuple_init_0, !180 - v1466v1 = const u64 0 - v3219v1 = get_elem_ptr v3216v1, __ptr __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, v1466v1, !181 - store v494v1 to v3219v1, !182 - v1469v1 = const u64 1 - v3221v1 = get_elem_ptr v3216v1, __ptr u64, v1469v1, !183 - v558v1 = const u64 104 - store v558v1 to v3221v1, !184 - v3224v1 = get_local __ptr { __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, u64 }, __anon_0, !74 - mem_copy_val v3224v1, v3216v1 - v3226v1 = cast_ptr v3224v1 to __ptr slice, !74 - v3740v1 = get_local __ptr slice, __tmp_block_arg - mem_copy_val v3740v1, v3226v1 - br encode_allow_alias_22_block2(v3740v1), !74 - - encode_allow_alias_22_block1(): v3810v1 = get_local __ptr { { ptr, u64, u64 } }, __ret_val1 v3811v1 = call new_6(v3810v1) - v2843v1 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, self_0, !187 + v2843v1 = get_local __ptr { u64, u64, u64, u8, { { ptr, u64 }, u64 }, slice, u256 }, self_0, !163 mem_copy_val v2843v1, v494v1 - v2845v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_, !188 + v2845v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_, !164 mem_copy_val v2845v1, v3810v1 v579v1 = const u64 0 - v2848v1 = get_elem_ptr v2843v1, __ptr u64, v579v1, !190 - v2849v1 = load v2848v1, !191 + v2848v1 = get_elem_ptr v2843v1, __ptr u64, v579v1, !166 + v2849v1 = load v2848v1, !167 v3704v1 = get_local __ptr { { ptr, u64, u64 } }, __tmp_arg mem_copy_val v3704v1, v2845v1 v3788v1 = get_local __ptr { { ptr, u64, u64 } }, __ret_val v3789v1 = call abi_encode_5(v2849v1, v3704v1, v3788v1) - v2853v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__, !193 + v2853v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__, !169 mem_copy_val v2853v1, v3788v1 v649v1 = const u64 1 - v2856v1 = get_elem_ptr v2843v1, __ptr u64, v649v1, !195 - v2861v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_0, !198 + v2856v1 = get_elem_ptr v2843v1, __ptr u64, v649v1, !171 + v2861v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_0, !174 mem_copy_val v2861v1, v2853v1 - v2863v1 = get_local __ptr { { ptr, u64, u64 } }, __struct_init_0, !200 + v2863v1 = get_local __ptr { { ptr, u64, u64 } }, __struct_init_0, !176 v595v1 = const u64 0 - v2865v1 = get_elem_ptr v2861v1, __ptr { ptr, u64, u64 }, v595v1, !201 + v2865v1 = get_elem_ptr v2861v1, __ptr { ptr, u64, u64 }, v595v1, !177 v3855v1 = asm(buffer: v2865v1) -> __ptr { ptr, u64, u64 } buffer { } v3932v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_0 mem_copy_val v3932v1, v3855v1 - v2868v1 = get_local __ptr { ptr, u64, u64 }, __anon_00, !202 + v2868v1 = get_local __ptr { ptr, u64, u64 }, __anon_00, !178 mem_copy_val v2868v1, v3932v1 v601v1 = const u64 0 - v2870v1 = get_elem_ptr v2868v1, __ptr ptr, v601v1, !203 - v2871v1 = load v2870v1, !204 + v2870v1 = get_elem_ptr v2868v1, __ptr ptr, v601v1, !179 + v2871v1 = load v2870v1, !180 v604v1 = const u64 1 - v2872v1 = get_elem_ptr v2868v1, __ptr u64, v604v1, !205 - v2873v1 = load v2872v1, !206 + v2872v1 = get_elem_ptr v2868v1, __ptr u64, v604v1, !181 + v2873v1 = load v2872v1, !182 v607v1 = const u64 2 - v2874v1 = get_elem_ptr v2868v1, __ptr u64, v607v1, !207 - v2875v1 = load v2874v1, !208 + v2874v1 = get_elem_ptr v2868v1, __ptr u64, v607v1, !183 + v2875v1 = load v2874v1, !184 v612v1 = const u64 4 - v2877v1 = add v2875v1, v612v1, !209 - v2878v1 = cmp gt v2877v1 v2873v1, !210 - cbr v2878v1, encode_allow_alias_22_abi_encode_37_abi_encode_38_block1(), encode_allow_alias_22_abi_encode_37_abi_encode_38_block0(v2871v1, v2873v1), !211 + v2877v1 = add v2875v1, v612v1, !185 + v2878v1 = cmp gt v2877v1 v2873v1, !186 + cbr v2878v1, encode_allow_alias_22_abi_encode_37_abi_encode_38_block1(), encode_allow_alias_22_abi_encode_37_abi_encode_38_block0(v2871v1, v2873v1), !187 encode_allow_alias_22_abi_encode_37_abi_encode_38_block0(mut v2780v1: ptr, mut v2781v1: u64): - v2885v1 = get_local __ptr u64, __anon_1, !212 + v2885v1 = get_local __ptr u64, __anon_1, !188 mem_copy_val v2885v1, v2856v1 v626v1 = const u64 4 - v2887v1 = add v2885v1, v626v1, !213 - v2888v1 = cast_ptr v2887v1 to __ptr u8, !214 - v2889v1 = add v2780v1, v2875v1, !215 - v2890v1 = cast_ptr v2889v1 to __ptr u8, !216 - mem_copy_bytes v2890v1, v2888v1, 4, !217 - v2893v1 = get_local __ptr { ptr, u64, u64 }, __anon_2, !218 + v2887v1 = add v2885v1, v626v1, !189 + v2888v1 = cast_ptr v2887v1 to __ptr u8, !190 + v2889v1 = add v2780v1, v2875v1, !191 + v2890v1 = cast_ptr v2889v1 to __ptr u8, !192 + mem_copy_bytes v2890v1, v2888v1, 4, !193 + v2893v1 = get_local __ptr { ptr, u64, u64 }, __anon_2, !194 v635v1 = const u64 0 - v2894v1 = get_elem_ptr v2893v1, __ptr ptr, v635v1, !219 - store v2780v1 to v2894v1, !220 + v2894v1 = get_elem_ptr v2893v1, __ptr ptr, v635v1, !195 + store v2780v1 to v2894v1, !196 v638v1 = const u64 1 - v2896v1 = get_elem_ptr v2893v1, __ptr u64, v638v1, !221 - store v2781v1 to v2896v1, !222 + v2896v1 = get_elem_ptr v2893v1, __ptr u64, v638v1, !197 + store v2781v1 to v2896v1, !198 v641v1 = const u64 2 - v2898v1 = get_elem_ptr v2893v1, __ptr u64, v641v1, !223 - store v2877v1 to v2898v1, !224 + v2898v1 = get_elem_ptr v2893v1, __ptr u64, v641v1, !199 + store v2877v1 to v2898v1, !200 v3857v1 = asm(buffer: v2893v1) -> __ptr { ptr, u64, u64 } buffer { } v3936v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_00 mem_copy_val v3936v1, v3857v1 v1472v1 = const u64 0 - v2901v1 = get_elem_ptr v2863v1, __ptr { ptr, u64, u64 }, v1472v1, !225 + v2901v1 = get_elem_ptr v2863v1, __ptr { ptr, u64, u64 }, v1472v1, !201 mem_copy_val v2901v1, v3936v1 - v2905v1 = get_local __ptr { { ptr, u64, u64 } }, buffer___, !227 + v2905v1 = get_local __ptr { { ptr, u64, u64 } }, buffer___, !203 mem_copy_val v2905v1, v2863v1 v719v1 = const u64 2 - v2908v1 = get_elem_ptr v2843v1, __ptr u64, v719v1, !229 - v2913v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_1, !232 + v2908v1 = get_elem_ptr v2843v1, __ptr u64, v719v1, !205 + v2913v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_1, !208 mem_copy_val v2913v1, v2905v1 - v2915v1 = get_local __ptr { { ptr, u64, u64 } }, __struct_init_00, !234 + v2915v1 = get_local __ptr { { ptr, u64, u64 } }, __struct_init_00, !210 v665v1 = const u64 0 - v2917v1 = get_elem_ptr v2913v1, __ptr { ptr, u64, u64 }, v665v1, !235 + v2917v1 = get_elem_ptr v2913v1, __ptr { ptr, u64, u64 }, v665v1, !211 v3859v1 = asm(buffer: v2917v1) -> __ptr { ptr, u64, u64 } buffer { } v3941v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_01 mem_copy_val v3941v1, v3859v1 - v2920v1 = get_local __ptr { ptr, u64, u64 }, __anon_000, !236 + v2920v1 = get_local __ptr { ptr, u64, u64 }, __anon_000, !212 mem_copy_val v2920v1, v3941v1 v671v1 = const u64 0 - v2922v1 = get_elem_ptr v2920v1, __ptr ptr, v671v1, !237 - v2923v1 = load v2922v1, !238 + v2922v1 = get_elem_ptr v2920v1, __ptr ptr, v671v1, !213 + v2923v1 = load v2922v1, !214 v674v1 = const u64 1 - v2924v1 = get_elem_ptr v2920v1, __ptr u64, v674v1, !239 - v2925v1 = load v2924v1, !240 + v2924v1 = get_elem_ptr v2920v1, __ptr u64, v674v1, !215 + v2925v1 = load v2924v1, !216 v677v1 = const u64 2 - v2926v1 = get_elem_ptr v2920v1, __ptr u64, v677v1, !241 - v2927v1 = load v2926v1, !242 + v2926v1 = get_elem_ptr v2920v1, __ptr u64, v677v1, !217 + v2927v1 = load v2926v1, !218 v682v1 = const u64 2 - v2929v1 = add v2927v1, v682v1, !243 - v2930v1 = cmp gt v2929v1 v2925v1, !244 - cbr v2930v1, encode_allow_alias_22_abi_encode_37_abi_encode_39_block1(), encode_allow_alias_22_abi_encode_37_abi_encode_39_block0(v2923v1, v2925v1), !245 + v2929v1 = add v2927v1, v682v1, !219 + v2930v1 = cmp gt v2929v1 v2925v1, !220 + cbr v2930v1, encode_allow_alias_22_abi_encode_37_abi_encode_39_block1(), encode_allow_alias_22_abi_encode_37_abi_encode_39_block0(v2923v1, v2925v1), !221 encode_allow_alias_22_abi_encode_37_abi_encode_38_block1(): v618v1 = const u64 2 - v2881v1 = mul v2873v1, v618v1, !246 - v2882v1 = add v2881v1, v612v1, !247 - v2883v1 = asm(new_cap: v2882v1, old_ptr: v2871v1, len: v2875v1) -> __ptr u8 hp, !248 { + v2881v1 = mul v2873v1, v618v1, !222 + v2882v1 = add v2881v1, v612v1, !223 + v2883v1 = asm(new_cap: v2882v1, old_ptr: v2871v1, len: v2875v1) -> __ptr u8 hp, !224 { aloc new_cap mcp hp old_ptr len } - br encode_allow_alias_22_abi_encode_37_abi_encode_38_block0(v2883v1, v2882v1), !249 + br encode_allow_alias_22_abi_encode_37_abi_encode_38_block0(v2883v1, v2882v1), !225 encode_allow_alias_22_abi_encode_37_abi_encode_39_block0(mut v2783v1: ptr, mut v2784v1: u64): - v2937v1 = get_local __ptr u64, __anon_10, !250 + v2937v1 = get_local __ptr u64, __anon_10, !226 mem_copy_val v2937v1, v2908v1 v696v1 = const u64 6 - v2939v1 = add v2937v1, v696v1, !251 - v2940v1 = cast_ptr v2939v1 to __ptr u8, !252 - v2941v1 = add v2783v1, v2927v1, !253 - v2942v1 = cast_ptr v2941v1 to __ptr u8, !254 - mem_copy_bytes v2942v1, v2940v1, 2, !255 - v2945v1 = get_local __ptr { ptr, u64, u64 }, __anon_20, !256 + v2939v1 = add v2937v1, v696v1, !227 + v2940v1 = cast_ptr v2939v1 to __ptr u8, !228 + v2941v1 = add v2783v1, v2927v1, !229 + v2942v1 = cast_ptr v2941v1 to __ptr u8, !230 + mem_copy_bytes v2942v1, v2940v1, 2, !231 + v2945v1 = get_local __ptr { ptr, u64, u64 }, __anon_20, !232 v705v1 = const u64 0 - v2946v1 = get_elem_ptr v2945v1, __ptr ptr, v705v1, !257 - store v2783v1 to v2946v1, !258 + v2946v1 = get_elem_ptr v2945v1, __ptr ptr, v705v1, !233 + store v2783v1 to v2946v1, !234 v708v1 = const u64 1 - v2948v1 = get_elem_ptr v2945v1, __ptr u64, v708v1, !259 - store v2784v1 to v2948v1, !260 + v2948v1 = get_elem_ptr v2945v1, __ptr u64, v708v1, !235 + store v2784v1 to v2948v1, !236 v711v1 = const u64 2 - v2950v1 = get_elem_ptr v2945v1, __ptr u64, v711v1, !261 - store v2929v1 to v2950v1, !262 + v2950v1 = get_elem_ptr v2945v1, __ptr u64, v711v1, !237 + store v2929v1 to v2950v1, !238 v3861v1 = asm(buffer: v2945v1) -> __ptr { ptr, u64, u64 } buffer { } v3945v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_02 mem_copy_val v3945v1, v3861v1 v1475v1 = const u64 0 - v2953v1 = get_elem_ptr v2915v1, __ptr { ptr, u64, u64 }, v1475v1, !263 + v2953v1 = get_elem_ptr v2915v1, __ptr { ptr, u64, u64 }, v1475v1, !239 mem_copy_val v2953v1, v3945v1 - v2957v1 = get_local __ptr { { ptr, u64, u64 } }, buffer____, !265 + v2957v1 = get_local __ptr { { ptr, u64, u64 } }, buffer____, !241 mem_copy_val v2957v1, v2915v1 v784v1 = const u64 3 - v2960v1 = get_elem_ptr v2843v1, __ptr u8, v784v1, !267 - v2961v1 = load v2960v1, !268 - v2965v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_2, !271 + v2960v1 = get_elem_ptr v2843v1, __ptr u8, v784v1, !243 + v2961v1 = load v2960v1, !244 + v2965v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_2, !247 mem_copy_val v2965v1, v2957v1 - v2967v1 = get_local __ptr { { ptr, u64, u64 } }, __struct_init_01, !273 + v2967v1 = get_local __ptr { { ptr, u64, u64 } }, __struct_init_01, !249 v735v1 = const u64 0 - v2969v1 = get_elem_ptr v2965v1, __ptr { ptr, u64, u64 }, v735v1, !274 + v2969v1 = get_elem_ptr v2965v1, __ptr { ptr, u64, u64 }, v735v1, !250 v3863v1 = asm(buffer: v2969v1) -> __ptr { ptr, u64, u64 } buffer { } v3950v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_03 mem_copy_val v3950v1, v3863v1 - v2972v1 = get_local __ptr { ptr, u64, u64 }, __anon_01, !275 + v2972v1 = get_local __ptr { ptr, u64, u64 }, __anon_01, !251 mem_copy_val v2972v1, v3950v1 v741v1 = const u64 0 - v2974v1 = get_elem_ptr v2972v1, __ptr ptr, v741v1, !276 - v2975v1 = load v2974v1, !277 + v2974v1 = get_elem_ptr v2972v1, __ptr ptr, v741v1, !252 + v2975v1 = load v2974v1, !253 v744v1 = const u64 1 - v2976v1 = get_elem_ptr v2972v1, __ptr u64, v744v1, !278 - v2977v1 = load v2976v1, !279 + v2976v1 = get_elem_ptr v2972v1, __ptr u64, v744v1, !254 + v2977v1 = load v2976v1, !255 v747v1 = const u64 2 - v2978v1 = get_elem_ptr v2972v1, __ptr u64, v747v1, !280 - v2979v1 = load v2978v1, !281 + v2978v1 = get_elem_ptr v2972v1, __ptr u64, v747v1, !256 + v2979v1 = load v2978v1, !257 v752v1 = const u64 1 - v2981v1 = add v2979v1, v752v1, !282 - v2982v1 = cmp gt v2981v1 v2977v1, !283 - cbr v2982v1, encode_allow_alias_22_abi_encode_37_abi_encode_40_block1(), encode_allow_alias_22_abi_encode_37_abi_encode_40_block0(v2975v1, v2977v1), !284 + v2981v1 = add v2979v1, v752v1, !258 + v2982v1 = cmp gt v2981v1 v2977v1, !259 + cbr v2982v1, encode_allow_alias_22_abi_encode_37_abi_encode_40_block1(), encode_allow_alias_22_abi_encode_37_abi_encode_40_block0(v2975v1, v2977v1), !260 encode_allow_alias_22_abi_encode_37_abi_encode_39_block1(): v688v1 = const u64 2 - v2933v1 = mul v2925v1, v688v1, !285 - v2934v1 = add v2933v1, v682v1, !286 - v2935v1 = asm(new_cap: v2934v1, old_ptr: v2923v1, len: v2927v1) -> __ptr u8 hp, !287 { + v2933v1 = mul v2925v1, v688v1, !261 + v2934v1 = add v2933v1, v682v1, !262 + v2935v1 = asm(new_cap: v2934v1, old_ptr: v2923v1, len: v2927v1) -> __ptr u8 hp, !263 { aloc new_cap mcp hp old_ptr len } - br encode_allow_alias_22_abi_encode_37_abi_encode_39_block0(v2935v1, v2934v1), !288 + br encode_allow_alias_22_abi_encode_37_abi_encode_39_block0(v2935v1, v2934v1), !264 encode_allow_alias_22_abi_encode_37_abi_encode_40_block0(mut v2786v1: ptr, mut v2787v1: u64): - v2989v1 = add v2786v1, v2979v1, !289 - v2990v1 = cast_ptr v2989v1 to __ptr u8, !290 - store v2961v1 to v2990v1, !291 - v2993v1 = get_local __ptr { ptr, u64, u64 }, __anon_11, !292 + v2989v1 = add v2786v1, v2979v1, !265 + v2990v1 = cast_ptr v2989v1 to __ptr u8, !266 + store v2961v1 to v2990v1, !267 + v2993v1 = get_local __ptr { ptr, u64, u64 }, __anon_11, !268 v770v1 = const u64 0 - v2994v1 = get_elem_ptr v2993v1, __ptr ptr, v770v1, !293 - store v2786v1 to v2994v1, !294 + v2994v1 = get_elem_ptr v2993v1, __ptr ptr, v770v1, !269 + store v2786v1 to v2994v1, !270 v773v1 = const u64 1 - v2996v1 = get_elem_ptr v2993v1, __ptr u64, v773v1, !295 - store v2787v1 to v2996v1, !296 + v2996v1 = get_elem_ptr v2993v1, __ptr u64, v773v1, !271 + store v2787v1 to v2996v1, !272 v776v1 = const u64 2 - v2998v1 = get_elem_ptr v2993v1, __ptr u64, v776v1, !297 - store v2981v1 to v2998v1, !298 + v2998v1 = get_elem_ptr v2993v1, __ptr u64, v776v1, !273 + store v2981v1 to v2998v1, !274 v3865v1 = asm(buffer: v2993v1) -> __ptr { ptr, u64, u64 } buffer { } v3953v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_04 mem_copy_val v3953v1, v3865v1 v1478v1 = const u64 0 - v3001v1 = get_elem_ptr v2967v1, __ptr { ptr, u64, u64 }, v1478v1, !299 + v3001v1 = get_elem_ptr v2967v1, __ptr { ptr, u64, u64 }, v1478v1, !275 mem_copy_val v3001v1, v3953v1 - v3005v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_____, !301 + v3005v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_____, !277 mem_copy_val v3005v1, v2967v1 v892v1 = const u64 4 - v3008v1 = get_elem_ptr v2843v1, __ptr { { ptr, u64 }, u64 }, v892v1, !303 - v3012v1 = get_local __ptr { { ptr, u64 }, u64 }, self_3, !306 + v3008v1 = get_elem_ptr v2843v1, __ptr { { ptr, u64 }, u64 }, v892v1, !279 + v3012v1 = get_local __ptr { { ptr, u64 }, u64 }, self_3, !282 mem_copy_val v3012v1, v3008v1 - v3014v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_3, !307 + v3014v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_3, !283 mem_copy_val v3014v1, v3005v1 v804v1 = const u64 1 - v3018v1 = get_elem_ptr v3012v1, __ptr u64, v804v1, !308 - v3019v1 = load v3018v1, !309 + v3018v1 = get_elem_ptr v3012v1, __ptr u64, v804v1, !284 + v3019v1 = load v3018v1, !285 v3707v1 = get_local __ptr { { ptr, u64, u64 } }, __tmp_arg0 mem_copy_val v3707v1, v3014v1 v3791v1 = get_local __ptr { { ptr, u64, u64 } }, __ret_val0 v3792v1 = call abi_encode_5(v3019v1, v3707v1, v3791v1) - v3023v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__0, !311 + v3023v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__0, !287 mem_copy_val v3023v1, v3791v1 - v3027v1 = get_local __ptr { ptr, u64 }, __tuple_init_00, !313 + v3027v1 = get_local __ptr { ptr, u64 }, __tuple_init_00, !289 v876v1 = const u64 0 - v3029v1 = get_elem_ptr v3012v1, __ptr { ptr, u64 }, v876v1, !314 + v3029v1 = get_elem_ptr v3012v1, __ptr { ptr, u64 }, v876v1, !290 v878v1 = const u64 0 - v3030v1 = get_elem_ptr v3029v1, __ptr ptr, v878v1, !315 - v3034v1 = load v3018v1, !316 + v3030v1 = get_elem_ptr v3029v1, __ptr ptr, v878v1, !291 + v3034v1 = load v3018v1, !292 v885v1 = const u64 8 - v3039v1 = mul v3034v1, v885v1, !319 + v3039v1 = mul v3034v1, v885v1, !295 v1481v1 = const u64 0 - v3041v1 = get_elem_ptr v3027v1, __ptr ptr, v1481v1, !320 + v3041v1 = get_elem_ptr v3027v1, __ptr ptr, v1481v1, !296 mem_copy_val v3041v1, v3030v1 v1484v1 = const u64 1 - v3043v1 = get_elem_ptr v3027v1, __ptr u64, v1484v1, !321 - store v3039v1 to v3043v1, !322 - v3046v1 = get_local __ptr { { ptr, u64, u64 } }, self_10, !325 + v3043v1 = get_elem_ptr v3027v1, __ptr u64, v1484v1, !297 + store v3039v1 to v3043v1, !298 + v3046v1 = get_local __ptr { { ptr, u64, u64 } }, self_10, !301 mem_copy_val v3046v1, v3023v1 - v3048v1 = get_local __ptr { ptr, u64 }, r_, !326 + v3048v1 = get_local __ptr { ptr, u64 }, r_, !302 mem_copy_val v3048v1, v3027v1 - v3050v1 = get_local __ptr { { ptr, u64, u64 } }, __struct_init_02, !328 + v3050v1 = get_local __ptr { { ptr, u64, u64 } }, __struct_init_02, !304 v820v1 = const u64 0 - v3052v1 = get_elem_ptr v3046v1, __ptr { ptr, u64, u64 }, v820v1, !329 + v3052v1 = get_elem_ptr v3046v1, __ptr { ptr, u64, u64 }, v820v1, !305 v3867v1 = asm(buffer: v3052v1) -> __ptr { ptr, u64, u64 } buffer { } v3964v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_05 mem_copy_val v3964v1, v3867v1 - v3055v1 = get_local __ptr { ptr, u64, u64 }, __anon_02, !330 + v3055v1 = get_local __ptr { ptr, u64, u64 }, __anon_02, !306 mem_copy_val v3055v1, v3964v1 v826v1 = const u64 0 - v3057v1 = get_elem_ptr v3055v1, __ptr ptr, v826v1, !331 - v3058v1 = load v3057v1, !332 + v3057v1 = get_elem_ptr v3055v1, __ptr ptr, v826v1, !307 + v3058v1 = load v3057v1, !308 v829v1 = const u64 1 - v3059v1 = get_elem_ptr v3055v1, __ptr u64, v829v1, !333 - v3060v1 = load v3059v1, !334 + v3059v1 = get_elem_ptr v3055v1, __ptr u64, v829v1, !309 + v3060v1 = load v3059v1, !310 v832v1 = const u64 2 - v3061v1 = get_elem_ptr v3055v1, __ptr u64, v832v1, !335 - v3062v1 = load v3061v1, !336 - v3065v1 = get_local __ptr { ptr, u64 }, __anon_12, !337 + v3061v1 = get_elem_ptr v3055v1, __ptr u64, v832v1, !311 + v3062v1 = load v3061v1, !312 + v3065v1 = get_local __ptr { ptr, u64 }, __anon_12, !313 mem_copy_val v3065v1, v3048v1 v839v1 = const u64 1 - v3067v1 = get_elem_ptr v3065v1, __ptr u64, v839v1, !338 - v3068v1 = load v3067v1, !339 - v3069v1 = add v3062v1, v3068v1, !340 - v3070v1 = cmp gt v3069v1 v3060v1, !341 - cbr v3070v1, encode_allow_alias_22_abi_encode_37_abi_encode_41_append_raw_42_block1(), encode_allow_alias_22_abi_encode_37_abi_encode_41_append_raw_42_block0(v3058v1, v3060v1), !342 + v3067v1 = get_elem_ptr v3065v1, __ptr u64, v839v1, !314 + v3068v1 = load v3067v1, !315 + v3069v1 = add v3062v1, v3068v1, !316 + v3070v1 = cmp gt v3069v1 v3060v1, !317 + cbr v3070v1, encode_allow_alias_22_abi_encode_37_abi_encode_41_append_raw_42_block1(), encode_allow_alias_22_abi_encode_37_abi_encode_41_append_raw_42_block0(v3058v1, v3060v1), !318 encode_allow_alias_22_abi_encode_37_abi_encode_40_block1(): v758v1 = const u64 2 - v2985v1 = mul v2977v1, v758v1, !343 - v2986v1 = add v2985v1, v752v1, !344 - v2987v1 = asm(new_cap: v2986v1, old_ptr: v2975v1, len: v2979v1) -> __ptr u8 hp, !345 { + v2985v1 = mul v2977v1, v758v1, !319 + v2986v1 = add v2985v1, v752v1, !320 + v2987v1 = asm(new_cap: v2986v1, old_ptr: v2975v1, len: v2979v1) -> __ptr u8 hp, !321 { aloc new_cap mcp hp old_ptr len } - br encode_allow_alias_22_abi_encode_37_abi_encode_40_block0(v2987v1, v2986v1), !346 + br encode_allow_alias_22_abi_encode_37_abi_encode_40_block0(v2987v1, v2986v1), !322 encode_allow_alias_22_abi_encode_37_abi_encode_41_append_raw_42_block0(mut v2790v1: ptr, mut v2791v1: u64): - v3077v1 = get_local __ptr { ptr, u64 }, __anon_21, !347 + v3077v1 = get_local __ptr { ptr, u64 }, __anon_21, !323 mem_copy_val v3077v1, v3048v1 - v3079v1 = add v2790v1, v3062v1, !348 - v3080v1 = cast_ptr v3079v1 to __ptr u8, !349 - v3081v1 = asm(item_ptr: v3077v1, len: v3062v1, addr: v3080v1, data_ptr, item_len, new_len) -> u64 new_len, !350 { + v3079v1 = add v2790v1, v3062v1, !324 + v3080v1 = cast_ptr v3079v1 to __ptr u8, !325 + v3081v1 = asm(item_ptr: v3077v1, len: v3062v1, addr: v3080v1, data_ptr, item_len, new_len) -> u64 new_len, !326 { lw item_len item_ptr i1 lw data_ptr item_ptr i0 mcp addr data_ptr item_len add new_len len item_len } - v3082v1 = get_local __ptr { ptr, u64, u64 }, __anon_3, !351 + v3082v1 = get_local __ptr { ptr, u64, u64 }, __anon_3, !327 v859v1 = const u64 0 - v3083v1 = get_elem_ptr v3082v1, __ptr ptr, v859v1, !352 - store v2790v1 to v3083v1, !353 + v3083v1 = get_elem_ptr v3082v1, __ptr ptr, v859v1, !328 + store v2790v1 to v3083v1, !329 v862v1 = const u64 1 - v3085v1 = get_elem_ptr v3082v1, __ptr u64, v862v1, !354 - store v2791v1 to v3085v1, !355 + v3085v1 = get_elem_ptr v3082v1, __ptr u64, v862v1, !330 + store v2791v1 to v3085v1, !331 v865v1 = const u64 2 - v3087v1 = get_elem_ptr v3082v1, __ptr u64, v865v1, !356 - store v3081v1 to v3087v1, !357 + v3087v1 = get_elem_ptr v3082v1, __ptr u64, v865v1, !332 + store v3081v1 to v3087v1, !333 v3869v1 = asm(buffer: v3082v1) -> __ptr { ptr, u64, u64 } buffer { } v3969v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_06 mem_copy_val v3969v1, v3869v1 v1487v1 = const u64 0 - v3090v1 = get_elem_ptr v3050v1, __ptr { ptr, u64, u64 }, v1487v1, !358 + v3090v1 = get_elem_ptr v3050v1, __ptr { ptr, u64, u64 }, v1487v1, !334 mem_copy_val v3090v1, v3969v1 - v3095v1 = get_local __ptr { { ptr, u64, u64 } }, buffer______, !360 + v3095v1 = get_local __ptr { { ptr, u64, u64 } }, buffer______, !336 mem_copy_val v3095v1, v3050v1 v964v1 = const u64 5 - v3098v1 = get_elem_ptr v2843v1, __ptr slice, v964v1, !362 - v3102v1 = get_local __ptr slice, self_4, !365 + v3098v1 = get_elem_ptr v2843v1, __ptr slice, v964v1, !338 + v3102v1 = get_local __ptr slice, self_4, !341 mem_copy_val v3102v1, v3098v1 - v3104v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_4, !366 + v3104v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_4, !342 mem_copy_val v3104v1, v3095v1 - v3106v1 = get_local __ptr { { ptr, u64, u64 } }, __struct_init_03, !368 + v3106v1 = get_local __ptr { { ptr, u64, u64 } }, __struct_init_03, !344 v908v1 = const u64 0 - v3108v1 = get_elem_ptr v3104v1, __ptr { ptr, u64, u64 }, v908v1, !369 + v3108v1 = get_elem_ptr v3104v1, __ptr { ptr, u64, u64 }, v908v1, !345 v3871v1 = asm(buffer: v3108v1) -> __ptr { ptr, u64, u64 } buffer { } v3975v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_07 mem_copy_val v3975v1, v3871v1 - v3111v1 = get_local __ptr { ptr, u64, u64 }, __anon_03, !370 + v3111v1 = get_local __ptr { ptr, u64, u64 }, __anon_03, !346 mem_copy_val v3111v1, v3975v1 v914v1 = const u64 0 - v3113v1 = get_elem_ptr v3111v1, __ptr ptr, v914v1, !371 - v3114v1 = load v3113v1, !372 + v3113v1 = get_elem_ptr v3111v1, __ptr ptr, v914v1, !347 + v3114v1 = load v3113v1, !348 v917v1 = const u64 1 - v3115v1 = get_elem_ptr v3111v1, __ptr u64, v917v1, !373 - v3116v1 = load v3115v1, !374 + v3115v1 = get_elem_ptr v3111v1, __ptr u64, v917v1, !349 + v3116v1 = load v3115v1, !350 v920v1 = const u64 2 - v3117v1 = get_elem_ptr v3111v1, __ptr u64, v920v1, !375 - v3118v1 = load v3117v1, !376 + v3117v1 = get_elem_ptr v3111v1, __ptr u64, v920v1, !351 + v3118v1 = load v3117v1, !352 v3981v1 = get_local __ptr slice, __aggr_memcpy_09 mem_copy_val v3981v1, v3102v1 v3873v1 = asm(item: v3102v1) -> __ptr { u64, u64 } item { } v3978v1 = get_local __ptr { u64, u64 }, __aggr_memcpy_08 mem_copy_val v3978v1, v3873v1 - v3122v1 = get_local __ptr { u64, u64 }, __anon_13, !377 + v3122v1 = get_local __ptr { u64, u64 }, __anon_13, !353 mem_copy_val v3122v1, v3978v1 v928v1 = const u64 1 - v3124v1 = get_elem_ptr v3122v1, __ptr u64, v928v1, !378 - v3125v1 = load v3124v1, !379 + v3124v1 = get_elem_ptr v3122v1, __ptr u64, v928v1, !354 + v3125v1 = load v3124v1, !355 v931v1 = const u64 8 - v3126v1 = add v3125v1, v931v1, !380 - v3127v1 = add v3118v1, v3126v1, !381 - v3128v1 = cmp gt v3127v1 v3116v1, !382 - cbr v3128v1, encode_allow_alias_22_abi_encode_37_abi_encode_43_block1(), encode_allow_alias_22_abi_encode_37_abi_encode_43_block0(v3114v1, v3116v1), !383 + v3126v1 = add v3125v1, v931v1, !356 + v3127v1 = add v3118v1, v3126v1, !357 + v3128v1 = cmp gt v3127v1 v3116v1, !358 + cbr v3128v1, encode_allow_alias_22_abi_encode_37_abi_encode_43_block1(), encode_allow_alias_22_abi_encode_37_abi_encode_43_block0(v3114v1, v3116v1), !359 encode_allow_alias_22_abi_encode_37_abi_encode_41_append_raw_42_block1(): v847v1 = const u64 2 - v3073v1 = mul v3060v1, v847v1, !384 - v3074v1 = add v3073v1, v3068v1, !385 - v3075v1 = asm(new_cap: v3074v1, old_ptr: v3058v1, len: v3062v1) -> __ptr u8 hp, !386 { + v3073v1 = mul v3060v1, v847v1, !360 + v3074v1 = add v3073v1, v3068v1, !361 + v3075v1 = asm(new_cap: v3074v1, old_ptr: v3058v1, len: v3062v1) -> __ptr u8 hp, !362 { aloc new_cap mcp hp old_ptr len } - br encode_allow_alias_22_abi_encode_37_abi_encode_41_append_raw_42_block0(v3075v1, v3074v1), !387 + br encode_allow_alias_22_abi_encode_37_abi_encode_41_append_raw_42_block0(v3075v1, v3074v1), !363 encode_allow_alias_22_abi_encode_37_abi_encode_43_block0(mut v2794v1: ptr, mut v2795v1: u64): - v3135v1 = get_local __ptr slice, __anon_22, !388 + v3135v1 = get_local __ptr slice, __anon_22, !364 mem_copy_val v3135v1, v3981v1 - v3137v1 = add v2794v1, v3118v1, !389 - v3138v1 = cast_ptr v3137v1 to __ptr u8, !390 - v3139v1 = asm(item_ptr: v3135v1, len: v3118v1, addr: v3138v1, data_ptr, item_len, new_len) -> u64 new_len, !391 { + v3137v1 = add v2794v1, v3118v1, !365 + v3138v1 = cast_ptr v3137v1 to __ptr u8, !366 + v3139v1 = asm(item_ptr: v3135v1, len: v3118v1, addr: v3138v1, data_ptr, item_len, new_len) -> u64 new_len, !367 { lw item_len item_ptr i1 sw addr item_len i0 addi addr addr i8 @@ -854,90 +812,90 @@ script { addi new_len len i8 add new_len new_len item_len } - v3140v1 = get_local __ptr { ptr, u64, u64 }, __anon_30, !392 + v3140v1 = get_local __ptr { ptr, u64, u64 }, __anon_30, !368 v950v1 = const u64 0 - v3141v1 = get_elem_ptr v3140v1, __ptr ptr, v950v1, !393 - store v2794v1 to v3141v1, !394 + v3141v1 = get_elem_ptr v3140v1, __ptr ptr, v950v1, !369 + store v2794v1 to v3141v1, !370 v953v1 = const u64 1 - v3143v1 = get_elem_ptr v3140v1, __ptr u64, v953v1, !395 - store v2795v1 to v3143v1, !396 + v3143v1 = get_elem_ptr v3140v1, __ptr u64, v953v1, !371 + store v2795v1 to v3143v1, !372 v956v1 = const u64 2 - v3145v1 = get_elem_ptr v3140v1, __ptr u64, v956v1, !397 - store v3139v1 to v3145v1, !398 + v3145v1 = get_elem_ptr v3140v1, __ptr u64, v956v1, !373 + store v3139v1 to v3145v1, !374 v3875v1 = asm(buffer: v3140v1) -> __ptr { ptr, u64, u64 } buffer { } v3984v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_010 mem_copy_val v3984v1, v3875v1 v1490v1 = const u64 0 - v3148v1 = get_elem_ptr v3106v1, __ptr { ptr, u64, u64 }, v1490v1, !399 + v3148v1 = get_elem_ptr v3106v1, __ptr { ptr, u64, u64 }, v1490v1, !375 mem_copy_val v3148v1, v3984v1 - v3152v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_______, !401 + v3152v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_______, !377 mem_copy_val v3152v1, v3106v1 v1031v1 = const u64 6 - v3155v1 = get_elem_ptr v2843v1, __ptr u256, v1031v1, !403 - v3159v1 = get_local __ptr u256, self_5, !406 + v3155v1 = get_elem_ptr v2843v1, __ptr u256, v1031v1, !379 + v3159v1 = get_local __ptr u256, self_5, !382 mem_copy_val v3159v1, v3155v1 - v3161v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_5, !407 + v3161v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_5, !383 mem_copy_val v3161v1, v3152v1 - v3163v1 = get_local __ptr { { ptr, u64, u64 } }, __struct_init_04, !409 + v3163v1 = get_local __ptr { { ptr, u64, u64 } }, __struct_init_04, !385 v980v1 = const u64 0 - v3165v1 = get_elem_ptr v3161v1, __ptr { ptr, u64, u64 }, v980v1, !410 + v3165v1 = get_elem_ptr v3161v1, __ptr { ptr, u64, u64 }, v980v1, !386 v3877v1 = asm(buffer: v3165v1) -> __ptr { ptr, u64, u64 } buffer { } v3990v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_011 mem_copy_val v3990v1, v3877v1 - v3168v1 = get_local __ptr { ptr, u64, u64 }, __anon_04, !411 + v3168v1 = get_local __ptr { ptr, u64, u64 }, __anon_04, !387 mem_copy_val v3168v1, v3990v1 v986v1 = const u64 0 - v3170v1 = get_elem_ptr v3168v1, __ptr ptr, v986v1, !412 - v3171v1 = load v3170v1, !413 + v3170v1 = get_elem_ptr v3168v1, __ptr ptr, v986v1, !388 + v3171v1 = load v3170v1, !389 v989v1 = const u64 1 - v3172v1 = get_elem_ptr v3168v1, __ptr u64, v989v1, !414 - v3173v1 = load v3172v1, !415 + v3172v1 = get_elem_ptr v3168v1, __ptr u64, v989v1, !390 + v3173v1 = load v3172v1, !391 v992v1 = const u64 2 - v3174v1 = get_elem_ptr v3168v1, __ptr u64, v992v1, !416 - v3175v1 = load v3174v1, !417 + v3174v1 = get_elem_ptr v3168v1, __ptr u64, v992v1, !392 + v3175v1 = load v3174v1, !393 v997v1 = const u64 32 - v3178v1 = add v3175v1, v997v1, !418 - v3179v1 = cmp gt v3178v1 v3173v1, !419 - cbr v3179v1, encode_allow_alias_22_abi_encode_37_abi_encode_44_block1(), encode_allow_alias_22_abi_encode_37_abi_encode_44_block0(v3171v1, v3173v1), !420 + v3178v1 = add v3175v1, v997v1, !394 + v3179v1 = cmp gt v3178v1 v3173v1, !395 + cbr v3179v1, encode_allow_alias_22_abi_encode_37_abi_encode_44_block1(), encode_allow_alias_22_abi_encode_37_abi_encode_44_block0(v3171v1, v3173v1), !396 encode_allow_alias_22_abi_encode_37_abi_encode_43_block1(): v938v1 = const u64 2 - v3131v1 = mul v3116v1, v938v1, !421 - v3132v1 = add v3131v1, v3126v1, !422 - v3133v1 = asm(new_cap: v3132v1, old_ptr: v3114v1, len: v3118v1) -> __ptr u8 hp, !423 { + v3131v1 = mul v3116v1, v938v1, !397 + v3132v1 = add v3131v1, v3126v1, !398 + v3133v1 = asm(new_cap: v3132v1, old_ptr: v3114v1, len: v3118v1) -> __ptr u8 hp, !399 { aloc new_cap mcp hp old_ptr len } - br encode_allow_alias_22_abi_encode_37_abi_encode_43_block0(v3133v1, v3132v1), !424 + br encode_allow_alias_22_abi_encode_37_abi_encode_43_block0(v3133v1, v3132v1), !400 encode_allow_alias_22_abi_encode_37_abi_encode_44_block0(mut v2797v1: ptr, mut v2798v1: u64): - v3186v1 = get_local __ptr u256, __anon_14, !425 + v3186v1 = get_local __ptr u256, __anon_14, !401 mem_copy_val v3186v1, v3159v1 - v3188v1 = add v2797v1, v3175v1, !426 - v3189v1 = cast_ptr v3188v1 to __ptr u8, !427 - mem_copy_bytes v3189v1, v3186v1, 32, !428 - v3192v1 = get_local __ptr { ptr, u64, u64 }, __anon_23, !429 + v3188v1 = add v2797v1, v3175v1, !402 + v3189v1 = cast_ptr v3188v1 to __ptr u8, !403 + mem_copy_bytes v3189v1, v3186v1, 32, !404 + v3192v1 = get_local __ptr { ptr, u64, u64 }, __anon_23, !405 v1017v1 = const u64 0 - v3193v1 = get_elem_ptr v3192v1, __ptr ptr, v1017v1, !430 - store v2797v1 to v3193v1, !431 + v3193v1 = get_elem_ptr v3192v1, __ptr ptr, v1017v1, !406 + store v2797v1 to v3193v1, !407 v1020v1 = const u64 1 - v3195v1 = get_elem_ptr v3192v1, __ptr u64, v1020v1, !432 - store v2798v1 to v3195v1, !433 + v3195v1 = get_elem_ptr v3192v1, __ptr u64, v1020v1, !408 + store v2798v1 to v3195v1, !409 v1023v1 = const u64 2 - v3197v1 = get_elem_ptr v3192v1, __ptr u64, v1023v1, !434 - store v3178v1 to v3197v1, !435 + v3197v1 = get_elem_ptr v3192v1, __ptr u64, v1023v1, !410 + store v3178v1 to v3197v1, !411 v3879v1 = asm(buffer: v3192v1) -> __ptr { ptr, u64, u64 } buffer { } v3994v1 = get_local __ptr { ptr, u64, u64 }, __aggr_memcpy_012 mem_copy_val v3994v1, v3879v1 v1493v1 = const u64 0 - v3200v1 = get_elem_ptr v3163v1, __ptr { ptr, u64, u64 }, v1493v1, !436 + v3200v1 = get_elem_ptr v3163v1, __ptr { ptr, u64, u64 }, v1493v1, !412 mem_copy_val v3200v1, v3994v1 - v3204v1 = get_local __ptr { { ptr, u64, u64 } }, buffer________, !438 + v3204v1 = get_local __ptr { { ptr, u64, u64 } }, buffer________, !414 mem_copy_val v3204v1, v3163v1 - v3209v1 = get_local __ptr { { ptr, u64, u64 } }, buffer, !440 + v3209v1 = get_local __ptr { { ptr, u64, u64 } }, buffer, !416 mem_copy_val v3209v1, v3204v1 v3724v1 = get_local __ptr { { ptr, u64, u64 } }, __tmp_arg1 mem_copy_val v3724v1, v3209v1 @@ -945,28 +903,25 @@ script { v3824v1 = call as_raw_slice_7(v3724v1, v3823v1) v3742v1 = get_local __ptr slice, __tmp_block_arg mem_copy_val v3742v1, v3823v1 - br encode_allow_alias_22_block2(v3742v1), !74 + v3852v1 = get_local __ptr slice, __log_arg + mem_copy_val v3852v1, v3742v1 + v1059v1 = const u64 4579537983717831593 + log __ptr slice v3852v1, v1059v1 + v1063v1 = const unit () + ret () v1063v1 encode_allow_alias_22_abi_encode_37_abi_encode_44_block1(): v1003v1 = const u64 2 - v3182v1 = mul v3173v1, v1003v1, !441 - v3183v1 = add v3182v1, v997v1, !442 - v3184v1 = asm(new_cap: v3183v1, old_ptr: v3171v1, len: v3175v1) -> __ptr u8 hp, !443 { + v3182v1 = mul v3173v1, v1003v1, !417 + v3183v1 = add v3182v1, v997v1, !418 + v3184v1 = asm(new_cap: v3183v1, old_ptr: v3171v1, len: v3175v1) -> __ptr u8 hp, !419 { aloc new_cap mcp hp old_ptr len } - br encode_allow_alias_22_abi_encode_37_abi_encode_44_block0(v3184v1, v3183v1), !444 - - encode_allow_alias_22_block2(mut v3738v1: __ptr slice): - v3852v1 = get_local __ptr slice, __log_arg - mem_copy_val v3852v1, v3738v1 - v1059v1 = const u64 4579537983717831593 - log __ptr slice v3852v1, v1059v1 - v1063v1 = const unit () - ret () v1063v1 + br encode_allow_alias_22_abi_encode_37_abi_encode_44_block0(v3184v1, v3183v1), !420 } - fn local_log_46(mut item: __ptr { u64 }) -> (), !445 { + fn local_log_46(mut item: __ptr { u64 }) -> (), !421 { local { __ptr { u64 }, u64 } __anon_0 local slice __log_arg local { u64 } item_ @@ -974,14 +929,14 @@ script { entry(item: __ptr { u64 }): v1093v1 = get_local __ptr { u64 }, item_ mem_copy_val v1093v1, item - v3303v1 = get_local __ptr { __ptr { u64 }, u64 }, __anon_0, !446 + v3303v1 = get_local __ptr { __ptr { u64 }, u64 }, __anon_0, !422 v1496v1 = const u64 0 - v3306v1 = get_elem_ptr v3303v1, __ptr __ptr { u64 }, v1496v1, !447 - store v1093v1 to v3306v1, !448 + v3306v1 = get_elem_ptr v3303v1, __ptr __ptr { u64 }, v1496v1, !423 + store v1093v1 to v3306v1, !424 v1499v1 = const u64 1 - v3308v1 = get_elem_ptr v3303v1, __ptr u64, v1499v1, !449 + v3308v1 = get_elem_ptr v3303v1, __ptr u64, v1499v1, !425 v1109v1 = const u64 8 - store v1109v1 to v3308v1, !450 + store v1109v1 to v3308v1, !426 v3313v1 = cast_ptr v3303v1 to __ptr slice, !74 v3881v1 = get_local __ptr slice, __log_arg mem_copy_val v3881v1, v3313v1 @@ -991,7 +946,7 @@ script { ret () v1162v1 } - fn local_log_51(mut item: __ptr { u64, ( { u64 } | () ) }) -> (), !451 { + fn local_log_51(mut item: __ptr { u64, ( { u64 } | () ) }) -> (), !427 { local slice __log_arg local { u64, ( { u64 } | () ) } __matched_value_1 local { { ptr, u64, u64 } } __tmp_block_arg @@ -1004,42 +959,42 @@ script { v3813v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_ v3814v1 = call new_6(v3813v1) v1219v1 = const u64 0 - v3551v1 = get_elem_ptr v1170v1, __ptr u64, v1219v1, !453 + v3551v1 = get_elem_ptr v1170v1, __ptr u64, v1219v1, !429 v4065v1 = get_elem_ptr item, __ptr u64, v1219v1 - v3552v1 = load v4065v1, !454 - v1222v1 = const u64 0, !452 - v3557v1 = cmp eq v3552v1 v1222v1, !457 - cbr v3557v1, encode_allow_alias_52_abi_encode_57_block0(), encode_allow_alias_52_abi_encode_57_block1(), !458 + v3552v1 = load v4065v1, !430 + v1222v1 = const u64 0, !428 + v3557v1 = cmp eq v3552v1 v1222v1, !433 + cbr v3557v1, encode_allow_alias_52_abi_encode_57_block0(), encode_allow_alias_52_abi_encode_57_block1(), !434 encode_allow_alias_52_abi_encode_57_block0(): v1225v1 = const u64 1 v1226v1 = const u64 0 - v3577v1 = get_elem_ptr v1170v1, __ptr { u64 }, v1225v1, v1226v1, !459 + v3577v1 = get_elem_ptr v1170v1, __ptr { u64 }, v1225v1, v1226v1, !435 v3797v1 = get_local __ptr { { ptr, u64, u64 } }, buffer__ - v1231v1 = const u64 0, !460 + v1231v1 = const u64 0, !436 v3798v1 = call abi_encode_5(v1231v1, v3813v1, v3797v1) v3836v1 = get_local __ptr { { ptr, u64, u64 } }, __tmp_block_arg v1130v1 = const u64 0 - v3837v3 = get_elem_ptr v3577v1, __ptr u64, v1130v1, !461 + v3837v3 = get_elem_ptr v3577v1, __ptr u64, v1130v1, !437 v4062v1 = load v3837v3 v4063v1 = call abi_encode_5(v4062v1, v3797v1, v3836v1) - br encode_allow_alias_52_abi_encode_57_block5(v3836v1), !462 + br encode_allow_alias_52_abi_encode_57_block5(v3836v1), !438 encode_allow_alias_52_abi_encode_57_block1(): - v3562v1 = load v3551v1, !463 - v1250v1 = const u64 1, !452 - v3567v1 = cmp eq v3562v1 v1250v1, !466 - cbr v3567v1, encode_allow_alias_52_abi_encode_57_block2(), encode_allow_alias_52_abi_encode_57_block3(), !467 + v3562v1 = load v3551v1, !439 + v1250v1 = const u64 1, !428 + v3567v1 = cmp eq v3562v1 v1250v1, !442 + cbr v3567v1, encode_allow_alias_52_abi_encode_57_block2(), encode_allow_alias_52_abi_encode_57_block3(), !443 encode_allow_alias_52_abi_encode_57_block2(): v3800v1 = get_local __ptr { { ptr, u64, u64 } }, __tmp_block_arg - v1252v1 = const u64 1, !468 + v1252v1 = const u64 1, !444 v3801v1 = call abi_encode_5(v1252v1, v3813v1, v3800v1) - br encode_allow_alias_52_abi_encode_57_block5(v3800v1), !469 + br encode_allow_alias_52_abi_encode_57_block5(v3800v1), !445 encode_allow_alias_52_abi_encode_57_block3(): - v1256v1 = const u64 14757395258967588866, !470 - revert v1256v1, !471 + v1256v1 = const u64 14757395258967588866, !446 + revert v1256v1, !447 encode_allow_alias_52_abi_encode_57_block5(mut v3766v1: __ptr { { ptr, u64, u64 } }): v3826v1 = get_local __ptr slice, __log_arg @@ -1050,7 +1005,7 @@ script { ret () v1291v1 } - fn local_log_58(mut item: __ptr { }) -> (), !472 { + fn local_log_58(mut item: __ptr { }) -> (), !448 { local slice __log_arg local { { ptr, u64, u64 } } buffer local { { ptr, u64, u64 } } buffer_ @@ -1059,7 +1014,7 @@ script { v3816v1 = get_local __ptr { { ptr, u64, u64 } }, buffer_ v3817v1 = call new_6(v3816v1) v3803v1 = get_local __ptr { { ptr, u64, u64 } }, buffer - v1346v1 = const u64 77, !473 + v1346v1 = const u64 77, !449 v3804v1 = call abi_encode_5(v1346v1, v3816v1, v3803v1) v3829v1 = get_local __ptr slice, __log_arg v3830v1 = call as_raw_slice_7(v3803v1, v3829v1) @@ -1231,319 +1186,295 @@ script { !158 = fn_call_path_span !23 6207 6209 !159 = (!157 !158) !160 = (!70 !71 !72) -!161 = span !10 56502 56526 -!162 = fn_call_path_span !10 56502 56519 -!163 = span !10 4237 4259 -!164 = fn_call_path_span !10 4237 4257 -!165 = span !0 148 205 -!166 = fn_call_path_span !0 175 177 -!167 = (!74 !161 !162 !163 !164 !165 !166) -!168 = span !0 148 359 -!169 = (!74 !161 !162 !163 !164 !168) -!170 = span !23 21526 21531 -!171 = (!74 !161 !162 !163 !164 !168) -!172 = span !0 148 389 -!173 = (!74 !161 !162 !163 !164 !172) -!174 = (!74 !161 !162 !163 !164 !172) -!175 = span !0 148 420 -!176 = (!74 !161 !162 !163 !164 !175) -!177 = span !10 5977 5981 -!178 = (!74 !161 !162 !163 !164 !175) -!179 = (!74 !161) -!180 = (!74 !75) -!181 = (!74 !75) -!182 = (!74 !75) -!183 = (!74 !75) -!184 = (!74 !75) -!185 = span !10 56658 56691 -!186 = fn_call_path_span !10 56666 56676 -!187 = (!74 !185 !186) -!188 = (!74 !185 !186) -!189 = span !13 116 122 -!190 = (!74 !185 !186 !189) -!191 = (!74 !185 !186) -!192 = span !0 543 582 -!193 = (!74 !185 !186 !192) -!194 = span !13 128 134 -!195 = (!74 !185 !186 !194) -!196 = span !0 596 621 -!197 = fn_call_path_span !0 603 613 -!198 = (!74 !185 !186 !196 !197) -!199 = span !10 5580 5663 -!200 = (!74 !185 !186 !196 !197 !199) -!201 = (!74 !185 !186 !196 !197 !86) -!202 = (!74 !185 !186 !196 !197) -!203 = (!74 !185 !186 !196 !197) -!204 = (!74 !185 !186 !196 !197) -!205 = (!74 !185 !186 !196 !197) -!206 = (!74 !185 !186 !196 !197) -!207 = (!74 !185 !186 !196 !197) -!208 = (!74 !185 !186 !196 !197) -!209 = (!74 !185 !186 !196 !197) -!210 = (!74 !185 !186 !196 !197) -!211 = (!74 !185 !186 !196 !197) -!212 = (!74 !185 !186 !196 !197) -!213 = (!74 !185 !186 !196 !197) -!214 = (!74 !185 !186 !196 !197) -!215 = (!74 !185 !186 !196 !197) -!216 = (!74 !185 !186 !196 !197) -!217 = (!74 !185 !186 !196 !197) -!218 = (!74 !185 !186 !196 !197) -!219 = (!74 !185 !186 !196 !197) -!220 = (!74 !185 !186 !196 !197) -!221 = (!74 !185 !186 !196 !197) -!222 = (!74 !185 !186 !196 !197) -!223 = (!74 !185 !186 !196 !197) -!224 = (!74 !185 !186 !196 !197) -!225 = (!74 !185 !186 !196 !197 !199) -!226 = span !0 583 622 -!227 = (!74 !185 !186 !226) -!228 = span !13 140 146 -!229 = (!74 !185 !186 !228) -!230 = span !0 636 661 -!231 = fn_call_path_span !0 643 653 -!232 = (!74 !185 !186 !230 !231) -!233 = span !10 5815 5898 -!234 = (!74 !185 !186 !230 !231 !233) -!235 = (!74 !185 !186 !230 !231 !86) -!236 = (!74 !185 !186 !230 !231) -!237 = (!74 !185 !186 !230 !231) -!238 = (!74 !185 !186 !230 !231) -!239 = (!74 !185 !186 !230 !231) -!240 = (!74 !185 !186 !230 !231) -!241 = (!74 !185 !186 !230 !231) -!242 = (!74 !185 !186 !230 !231) -!243 = (!74 !185 !186 !230 !231) -!244 = (!74 !185 !186 !230 !231) -!245 = (!74 !185 !186 !230 !231) -!246 = (!74 !185 !186 !196 !197) -!247 = (!74 !185 !186 !196 !197) -!248 = (!74 !185 !186 !196 !197) -!249 = (!74 !185 !186 !196 !197) -!250 = (!74 !185 !186 !230 !231) -!251 = (!74 !185 !186 !230 !231) -!252 = (!74 !185 !186 !230 !231) -!253 = (!74 !185 !186 !230 !231) -!254 = (!74 !185 !186 !230 !231) -!255 = (!74 !185 !186 !230 !231) -!256 = (!74 !185 !186 !230 !231) -!257 = (!74 !185 !186 !230 !231) -!258 = (!74 !185 !186 !230 !231) -!259 = (!74 !185 !186 !230 !231) -!260 = (!74 !185 !186 !230 !231) -!261 = (!74 !185 !186 !230 !231) -!262 = (!74 !185 !186 !230 !231) -!263 = (!74 !185 !186 !230 !231 !233) -!264 = span !0 623 662 -!265 = (!74 !185 !186 !264) -!266 = span !13 152 157 -!267 = (!74 !185 !186 !266) -!268 = (!74 !185 !186) -!269 = span !0 676 701 -!270 = fn_call_path_span !0 683 693 -!271 = (!74 !185 !186 !269 !270) -!272 = span !10 6048 6131 -!273 = (!74 !185 !186 !269 !270 !272) -!274 = (!74 !185 !186 !269 !270 !86) -!275 = (!74 !185 !186 !269 !270) -!276 = (!74 !185 !186 !269 !270) -!277 = (!74 !185 !186 !269 !270) -!278 = (!74 !185 !186 !269 !270) -!279 = (!74 !185 !186 !269 !270) -!280 = (!74 !185 !186 !269 !270) -!281 = (!74 !185 !186 !269 !270) -!282 = (!74 !185 !186 !269 !270) -!283 = (!74 !185 !186 !269 !270) -!284 = (!74 !185 !186 !269 !270) -!285 = (!74 !185 !186 !230 !231) -!286 = (!74 !185 !186 !230 !231) -!287 = (!74 !185 !186 !230 !231) -!288 = (!74 !185 !186 !230 !231) -!289 = (!74 !185 !186 !269 !270) -!290 = (!74 !185 !186 !269 !270) -!291 = (!74 !185 !186 !269 !270) -!292 = (!74 !185 !186 !269 !270) -!293 = (!74 !185 !186 !269 !270) -!294 = (!74 !185 !186 !269 !270) -!295 = (!74 !185 !186 !269 !270) -!296 = (!74 !185 !186 !269 !270) -!297 = (!74 !185 !186 !269 !270) -!298 = (!74 !185 !186 !269 !270) -!299 = (!74 !185 !186 !269 !270 !272) -!300 = span !0 663 702 -!301 = (!74 !185 !186 !300) -!302 = span !13 163 174 -!303 = (!74 !185 !186 !302) -!304 = span !0 716 741 -!305 = fn_call_path_span !0 723 733 -!306 = (!74 !185 !186 !304 !305) -!307 = (!74 !185 !186 !304 !305) -!308 = (!74 !185 !186 !304 !305 !99) -!309 = (!74 !185 !186 !304 !305) -!310 = span !23 21689 21730 -!311 = (!74 !185 !186 !304 !305 !310) -!312 = span !23 21761 21804 -!313 = (!74 !185 !186 !304 !305 !312) -!314 = (!74 !185 !186 !304 !305 !100) -!315 = (!74 !185 !186 !304 !305 !118) -!316 = (!74 !185 !186 !304 !305) -!317 = span !23 21776 21803 -!318 = fn_call_path_span !23 21785 21786 -!319 = (!74 !185 !186 !304 !305 !317 !318) -!320 = (!74 !185 !186 !304 !305 !312) -!321 = (!74 !185 !186 !304 !305 !312) -!322 = (!74 !185 !186 !304 !305 !312) -!323 = span !23 21743 21805 -!324 = fn_call_path_span !23 21750 21760 -!325 = (!74 !185 !186 !304 !305 !323 !324) -!326 = (!74 !185 !186 !304 !305 !323 !324) -!327 = span !10 575 653 -!328 = (!74 !185 !186 !304 !305 !323 !324 !327) -!329 = (!74 !185 !186 !304 !305 !323 !324 !86) -!330 = (!74 !185 !186 !304 !305 !323 !324) -!331 = (!74 !185 !186 !304 !305 !323 !324) -!332 = (!74 !185 !186 !304 !305 !323 !324) -!333 = (!74 !185 !186 !304 !305 !323 !324) -!334 = (!74 !185 !186 !304 !305 !323 !324) -!335 = (!74 !185 !186 !304 !305 !323 !324) -!336 = (!74 !185 !186 !304 !305 !323 !324) -!337 = (!74 !185 !186 !304 !305 !323 !324) -!338 = (!74 !185 !186 !304 !305 !323 !324) -!339 = (!74 !185 !186 !304 !305 !323 !324) -!340 = (!74 !185 !186 !304 !305 !323 !324) -!341 = (!74 !185 !186 !304 !305 !323 !324) -!342 = (!74 !185 !186 !304 !305 !323 !324) -!343 = (!74 !185 !186 !269 !270) -!344 = (!74 !185 !186 !269 !270) -!345 = (!74 !185 !186 !269 !270) -!346 = (!74 !185 !186 !269 !270) -!347 = (!74 !185 !186 !304 !305 !323 !324) -!348 = (!74 !185 !186 !304 !305 !323 !324) -!349 = (!74 !185 !186 !304 !305 !323 !324) -!350 = (!74 !185 !186 !304 !305 !323 !324) -!351 = (!74 !185 !186 !304 !305 !323 !324) -!352 = (!74 !185 !186 !304 !305 !323 !324) -!353 = (!74 !185 !186 !304 !305 !323 !324) -!354 = (!74 !185 !186 !304 !305 !323 !324) -!355 = (!74 !185 !186 !304 !305 !323 !324) -!356 = (!74 !185 !186 !304 !305 !323 !324) -!357 = (!74 !185 !186 !304 !305 !323 !324) -!358 = (!74 !185 !186 !304 !305 !323 !324 !327) -!359 = span !0 703 742 -!360 = (!74 !185 !186 !359) -!361 = span !13 180 186 -!362 = (!74 !185 !186 !361) -!363 = span !0 756 781 -!364 = fn_call_path_span !0 763 773 -!365 = (!74 !185 !186 !363 !364) -!366 = (!74 !185 !186 !363 !364) -!367 = span !10 6319 6402 -!368 = (!74 !185 !186 !363 !364 !367) -!369 = (!74 !185 !186 !363 !364 !86) -!370 = (!74 !185 !186 !363 !364) -!371 = (!74 !185 !186 !363 !364) -!372 = (!74 !185 !186 !363 !364) -!373 = (!74 !185 !186 !363 !364) -!374 = (!74 !185 !186 !363 !364) -!375 = (!74 !185 !186 !363 !364) -!376 = (!74 !185 !186 !363 !364) -!377 = (!74 !185 !186 !363 !364) -!378 = (!74 !185 !186 !363 !364) -!379 = (!74 !185 !186 !363 !364) -!380 = (!74 !185 !186 !363 !364) -!381 = (!74 !185 !186 !363 !364) -!382 = (!74 !185 !186 !363 !364) -!383 = (!74 !185 !186 !363 !364) -!384 = (!74 !185 !186 !304 !305 !323 !324) -!385 = (!74 !185 !186 !304 !305 !323 !324) -!386 = (!74 !185 !186 !304 !305 !323 !324) -!387 = (!74 !185 !186 !304 !305 !323 !324) -!388 = (!74 !185 !186 !363 !364) -!389 = (!74 !185 !186 !363 !364) -!390 = (!74 !185 !186 !363 !364) -!391 = (!74 !185 !186 !363 !364) -!392 = (!74 !185 !186 !363 !364) -!393 = (!74 !185 !186 !363 !364) -!394 = (!74 !185 !186 !363 !364) -!395 = (!74 !185 !186 !363 !364) -!396 = (!74 !185 !186 !363 !364) -!397 = (!74 !185 !186 !363 !364) -!398 = (!74 !185 !186 !363 !364) -!399 = (!74 !185 !186 !363 !364 !367) -!400 = span !0 743 782 -!401 = (!74 !185 !186 !400) -!402 = span !13 192 199 -!403 = (!74 !185 !186 !402) -!404 = span !0 796 821 -!405 = fn_call_path_span !0 803 813 -!406 = (!74 !185 !186 !404 !405) -!407 = (!74 !185 !186 !404 !405) -!408 = span !10 5111 5194 -!409 = (!74 !185 !186 !404 !405 !408) -!410 = (!74 !185 !186 !404 !405 !86) -!411 = (!74 !185 !186 !404 !405) -!412 = (!74 !185 !186 !404 !405) -!413 = (!74 !185 !186 !404 !405) -!414 = (!74 !185 !186 !404 !405) -!415 = (!74 !185 !186 !404 !405) -!416 = (!74 !185 !186 !404 !405) -!417 = (!74 !185 !186 !404 !405) -!418 = (!74 !185 !186 !404 !405) -!419 = (!74 !185 !186 !404 !405) -!420 = (!74 !185 !186 !404 !405) -!421 = (!74 !185 !186 !363 !364) -!422 = (!74 !185 !186 !363 !364) -!423 = (!74 !185 !186 !363 !364) -!424 = (!74 !185 !186 !363 !364) -!425 = (!74 !185 !186 !404 !405) -!426 = (!74 !185 !186 !404 !405) -!427 = (!74 !185 !186 !404 !405) -!428 = (!74 !185 !186 !404 !405) -!429 = (!74 !185 !186 !404 !405) -!430 = (!74 !185 !186 !404 !405) -!431 = (!74 !185 !186 !404 !405) -!432 = (!74 !185 !186 !404 !405) -!433 = (!74 !185 !186 !404 !405) -!434 = (!74 !185 !186 !404 !405) -!435 = (!74 !185 !186 !404 !405) -!436 = (!74 !185 !186 !404 !405 !408) -!437 = span !0 783 822 -!438 = (!74 !185 !186 !437) -!439 = span !10 56645 56692 -!440 = (!74 !439) -!441 = (!74 !185 !186 !404 !405) -!442 = (!74 !185 !186 !404 !405) -!443 = (!74 !185 !186 !404 !405) -!444 = (!74 !185 !186 !404 !405) -!445 = (!70 !71 !72) -!446 = (!74 !75) -!447 = (!74 !75) -!448 = (!74 !75) -!449 = (!74 !75) -!450 = (!74 !75) -!451 = (!70 !71 !72) -!452 = span !0 410 414 -!453 = (!74 !185 !186 !452) -!454 = (!74 !185 !186) -!455 = span !0 417 612 -!456 = fn_call_path_span !0 417 612 -!457 = (!74 !185 !186 !455 !456) -!458 = (!74 !185 !186 !455) -!459 = (!74 !185 !186) -!460 = span !0 471 475 -!461 = span !13 92 97 -!462 = (!74 !185 !186) -!463 = (!74 !185 !186) -!464 = span !0 614 694 -!465 = fn_call_path_span !0 614 694 -!466 = (!74 !185 !186 !464 !465) -!467 = (!74 !185 !186 !464) -!468 = span !0 648 652 -!469 = (!74 !185 !186) -!470 = span !0 404 698 -!471 = (!74 !185 !186 !470) -!472 = (!70 !71 !72) -!473 = span !13 433 438 +!161 = span !10 56658 56691 +!162 = fn_call_path_span !10 56666 56676 +!163 = (!74 !161 !162) +!164 = (!74 !161 !162) +!165 = span !13 116 122 +!166 = (!74 !161 !162 !165) +!167 = (!74 !161 !162) +!168 = span !0 543 582 +!169 = (!74 !161 !162 !168) +!170 = span !13 128 134 +!171 = (!74 !161 !162 !170) +!172 = span !0 596 621 +!173 = fn_call_path_span !0 603 613 +!174 = (!74 !161 !162 !172 !173) +!175 = span !10 5580 5663 +!176 = (!74 !161 !162 !172 !173 !175) +!177 = (!74 !161 !162 !172 !173 !86) +!178 = (!74 !161 !162 !172 !173) +!179 = (!74 !161 !162 !172 !173) +!180 = (!74 !161 !162 !172 !173) +!181 = (!74 !161 !162 !172 !173) +!182 = (!74 !161 !162 !172 !173) +!183 = (!74 !161 !162 !172 !173) +!184 = (!74 !161 !162 !172 !173) +!185 = (!74 !161 !162 !172 !173) +!186 = (!74 !161 !162 !172 !173) +!187 = (!74 !161 !162 !172 !173) +!188 = (!74 !161 !162 !172 !173) +!189 = (!74 !161 !162 !172 !173) +!190 = (!74 !161 !162 !172 !173) +!191 = (!74 !161 !162 !172 !173) +!192 = (!74 !161 !162 !172 !173) +!193 = (!74 !161 !162 !172 !173) +!194 = (!74 !161 !162 !172 !173) +!195 = (!74 !161 !162 !172 !173) +!196 = (!74 !161 !162 !172 !173) +!197 = (!74 !161 !162 !172 !173) +!198 = (!74 !161 !162 !172 !173) +!199 = (!74 !161 !162 !172 !173) +!200 = (!74 !161 !162 !172 !173) +!201 = (!74 !161 !162 !172 !173 !175) +!202 = span !0 583 622 +!203 = (!74 !161 !162 !202) +!204 = span !13 140 146 +!205 = (!74 !161 !162 !204) +!206 = span !0 636 661 +!207 = fn_call_path_span !0 643 653 +!208 = (!74 !161 !162 !206 !207) +!209 = span !10 5815 5898 +!210 = (!74 !161 !162 !206 !207 !209) +!211 = (!74 !161 !162 !206 !207 !86) +!212 = (!74 !161 !162 !206 !207) +!213 = (!74 !161 !162 !206 !207) +!214 = (!74 !161 !162 !206 !207) +!215 = (!74 !161 !162 !206 !207) +!216 = (!74 !161 !162 !206 !207) +!217 = (!74 !161 !162 !206 !207) +!218 = (!74 !161 !162 !206 !207) +!219 = (!74 !161 !162 !206 !207) +!220 = (!74 !161 !162 !206 !207) +!221 = (!74 !161 !162 !206 !207) +!222 = (!74 !161 !162 !172 !173) +!223 = (!74 !161 !162 !172 !173) +!224 = (!74 !161 !162 !172 !173) +!225 = (!74 !161 !162 !172 !173) +!226 = (!74 !161 !162 !206 !207) +!227 = (!74 !161 !162 !206 !207) +!228 = (!74 !161 !162 !206 !207) +!229 = (!74 !161 !162 !206 !207) +!230 = (!74 !161 !162 !206 !207) +!231 = (!74 !161 !162 !206 !207) +!232 = (!74 !161 !162 !206 !207) +!233 = (!74 !161 !162 !206 !207) +!234 = (!74 !161 !162 !206 !207) +!235 = (!74 !161 !162 !206 !207) +!236 = (!74 !161 !162 !206 !207) +!237 = (!74 !161 !162 !206 !207) +!238 = (!74 !161 !162 !206 !207) +!239 = (!74 !161 !162 !206 !207 !209) +!240 = span !0 623 662 +!241 = (!74 !161 !162 !240) +!242 = span !13 152 157 +!243 = (!74 !161 !162 !242) +!244 = (!74 !161 !162) +!245 = span !0 676 701 +!246 = fn_call_path_span !0 683 693 +!247 = (!74 !161 !162 !245 !246) +!248 = span !10 6048 6131 +!249 = (!74 !161 !162 !245 !246 !248) +!250 = (!74 !161 !162 !245 !246 !86) +!251 = (!74 !161 !162 !245 !246) +!252 = (!74 !161 !162 !245 !246) +!253 = (!74 !161 !162 !245 !246) +!254 = (!74 !161 !162 !245 !246) +!255 = (!74 !161 !162 !245 !246) +!256 = (!74 !161 !162 !245 !246) +!257 = (!74 !161 !162 !245 !246) +!258 = (!74 !161 !162 !245 !246) +!259 = (!74 !161 !162 !245 !246) +!260 = (!74 !161 !162 !245 !246) +!261 = (!74 !161 !162 !206 !207) +!262 = (!74 !161 !162 !206 !207) +!263 = (!74 !161 !162 !206 !207) +!264 = (!74 !161 !162 !206 !207) +!265 = (!74 !161 !162 !245 !246) +!266 = (!74 !161 !162 !245 !246) +!267 = (!74 !161 !162 !245 !246) +!268 = (!74 !161 !162 !245 !246) +!269 = (!74 !161 !162 !245 !246) +!270 = (!74 !161 !162 !245 !246) +!271 = (!74 !161 !162 !245 !246) +!272 = (!74 !161 !162 !245 !246) +!273 = (!74 !161 !162 !245 !246) +!274 = (!74 !161 !162 !245 !246) +!275 = (!74 !161 !162 !245 !246 !248) +!276 = span !0 663 702 +!277 = (!74 !161 !162 !276) +!278 = span !13 163 174 +!279 = (!74 !161 !162 !278) +!280 = span !0 716 741 +!281 = fn_call_path_span !0 723 733 +!282 = (!74 !161 !162 !280 !281) +!283 = (!74 !161 !162 !280 !281) +!284 = (!74 !161 !162 !280 !281 !99) +!285 = (!74 !161 !162 !280 !281) +!286 = span !23 21689 21730 +!287 = (!74 !161 !162 !280 !281 !286) +!288 = span !23 21761 21804 +!289 = (!74 !161 !162 !280 !281 !288) +!290 = (!74 !161 !162 !280 !281 !100) +!291 = (!74 !161 !162 !280 !281 !118) +!292 = (!74 !161 !162 !280 !281) +!293 = span !23 21776 21803 +!294 = fn_call_path_span !23 21785 21786 +!295 = (!74 !161 !162 !280 !281 !293 !294) +!296 = (!74 !161 !162 !280 !281 !288) +!297 = (!74 !161 !162 !280 !281 !288) +!298 = (!74 !161 !162 !280 !281 !288) +!299 = span !23 21743 21805 +!300 = fn_call_path_span !23 21750 21760 +!301 = (!74 !161 !162 !280 !281 !299 !300) +!302 = (!74 !161 !162 !280 !281 !299 !300) +!303 = span !10 575 653 +!304 = (!74 !161 !162 !280 !281 !299 !300 !303) +!305 = (!74 !161 !162 !280 !281 !299 !300 !86) +!306 = (!74 !161 !162 !280 !281 !299 !300) +!307 = (!74 !161 !162 !280 !281 !299 !300) +!308 = (!74 !161 !162 !280 !281 !299 !300) +!309 = (!74 !161 !162 !280 !281 !299 !300) +!310 = (!74 !161 !162 !280 !281 !299 !300) +!311 = (!74 !161 !162 !280 !281 !299 !300) +!312 = (!74 !161 !162 !280 !281 !299 !300) +!313 = (!74 !161 !162 !280 !281 !299 !300) +!314 = (!74 !161 !162 !280 !281 !299 !300) +!315 = (!74 !161 !162 !280 !281 !299 !300) +!316 = (!74 !161 !162 !280 !281 !299 !300) +!317 = (!74 !161 !162 !280 !281 !299 !300) +!318 = (!74 !161 !162 !280 !281 !299 !300) +!319 = (!74 !161 !162 !245 !246) +!320 = (!74 !161 !162 !245 !246) +!321 = (!74 !161 !162 !245 !246) +!322 = (!74 !161 !162 !245 !246) +!323 = (!74 !161 !162 !280 !281 !299 !300) +!324 = (!74 !161 !162 !280 !281 !299 !300) +!325 = (!74 !161 !162 !280 !281 !299 !300) +!326 = (!74 !161 !162 !280 !281 !299 !300) +!327 = (!74 !161 !162 !280 !281 !299 !300) +!328 = (!74 !161 !162 !280 !281 !299 !300) +!329 = (!74 !161 !162 !280 !281 !299 !300) +!330 = (!74 !161 !162 !280 !281 !299 !300) +!331 = (!74 !161 !162 !280 !281 !299 !300) +!332 = (!74 !161 !162 !280 !281 !299 !300) +!333 = (!74 !161 !162 !280 !281 !299 !300) +!334 = (!74 !161 !162 !280 !281 !299 !300 !303) +!335 = span !0 703 742 +!336 = (!74 !161 !162 !335) +!337 = span !13 180 186 +!338 = (!74 !161 !162 !337) +!339 = span !0 756 781 +!340 = fn_call_path_span !0 763 773 +!341 = (!74 !161 !162 !339 !340) +!342 = (!74 !161 !162 !339 !340) +!343 = span !10 6319 6402 +!344 = (!74 !161 !162 !339 !340 !343) +!345 = (!74 !161 !162 !339 !340 !86) +!346 = (!74 !161 !162 !339 !340) +!347 = (!74 !161 !162 !339 !340) +!348 = (!74 !161 !162 !339 !340) +!349 = (!74 !161 !162 !339 !340) +!350 = (!74 !161 !162 !339 !340) +!351 = (!74 !161 !162 !339 !340) +!352 = (!74 !161 !162 !339 !340) +!353 = (!74 !161 !162 !339 !340) +!354 = (!74 !161 !162 !339 !340) +!355 = (!74 !161 !162 !339 !340) +!356 = (!74 !161 !162 !339 !340) +!357 = (!74 !161 !162 !339 !340) +!358 = (!74 !161 !162 !339 !340) +!359 = (!74 !161 !162 !339 !340) +!360 = (!74 !161 !162 !280 !281 !299 !300) +!361 = (!74 !161 !162 !280 !281 !299 !300) +!362 = (!74 !161 !162 !280 !281 !299 !300) +!363 = (!74 !161 !162 !280 !281 !299 !300) +!364 = (!74 !161 !162 !339 !340) +!365 = (!74 !161 !162 !339 !340) +!366 = (!74 !161 !162 !339 !340) +!367 = (!74 !161 !162 !339 !340) +!368 = (!74 !161 !162 !339 !340) +!369 = (!74 !161 !162 !339 !340) +!370 = (!74 !161 !162 !339 !340) +!371 = (!74 !161 !162 !339 !340) +!372 = (!74 !161 !162 !339 !340) +!373 = (!74 !161 !162 !339 !340) +!374 = (!74 !161 !162 !339 !340) +!375 = (!74 !161 !162 !339 !340 !343) +!376 = span !0 743 782 +!377 = (!74 !161 !162 !376) +!378 = span !13 192 199 +!379 = (!74 !161 !162 !378) +!380 = span !0 796 821 +!381 = fn_call_path_span !0 803 813 +!382 = (!74 !161 !162 !380 !381) +!383 = (!74 !161 !162 !380 !381) +!384 = span !10 5111 5194 +!385 = (!74 !161 !162 !380 !381 !384) +!386 = (!74 !161 !162 !380 !381 !86) +!387 = (!74 !161 !162 !380 !381) +!388 = (!74 !161 !162 !380 !381) +!389 = (!74 !161 !162 !380 !381) +!390 = (!74 !161 !162 !380 !381) +!391 = (!74 !161 !162 !380 !381) +!392 = (!74 !161 !162 !380 !381) +!393 = (!74 !161 !162 !380 !381) +!394 = (!74 !161 !162 !380 !381) +!395 = (!74 !161 !162 !380 !381) +!396 = (!74 !161 !162 !380 !381) +!397 = (!74 !161 !162 !339 !340) +!398 = (!74 !161 !162 !339 !340) +!399 = (!74 !161 !162 !339 !340) +!400 = (!74 !161 !162 !339 !340) +!401 = (!74 !161 !162 !380 !381) +!402 = (!74 !161 !162 !380 !381) +!403 = (!74 !161 !162 !380 !381) +!404 = (!74 !161 !162 !380 !381) +!405 = (!74 !161 !162 !380 !381) +!406 = (!74 !161 !162 !380 !381) +!407 = (!74 !161 !162 !380 !381) +!408 = (!74 !161 !162 !380 !381) +!409 = (!74 !161 !162 !380 !381) +!410 = (!74 !161 !162 !380 !381) +!411 = (!74 !161 !162 !380 !381) +!412 = (!74 !161 !162 !380 !381 !384) +!413 = span !0 783 822 +!414 = (!74 !161 !162 !413) +!415 = span !10 56645 56692 +!416 = (!74 !415) +!417 = (!74 !161 !162 !380 !381) +!418 = (!74 !161 !162 !380 !381) +!419 = (!74 !161 !162 !380 !381) +!420 = (!74 !161 !162 !380 !381) +!421 = (!70 !71 !72) +!422 = (!74 !75) +!423 = (!74 !75) +!424 = (!74 !75) +!425 = (!74 !75) +!426 = (!74 !75) +!427 = (!70 !71 !72) +!428 = span !0 410 414 +!429 = (!74 !161 !162 !428) +!430 = (!74 !161 !162) +!431 = span !0 417 612 +!432 = fn_call_path_span !0 417 612 +!433 = (!74 !161 !162 !431 !432) +!434 = (!74 !161 !162 !431) +!435 = (!74 !161 !162) +!436 = span !0 471 475 +!437 = span !13 92 97 +!438 = (!74 !161 !162) +!439 = (!74 !161 !162) +!440 = span !0 614 694 +!441 = fn_call_path_span !0 614 694 +!442 = (!74 !161 !162 !440 !441) +!443 = (!74 !161 !162 !440) +!444 = span !0 648 652 +!445 = (!74 !161 !162) +!446 = span !0 404 698 +!447 = (!74 !161 !162 !446) +!448 = (!70 !71 !72) +!449 = span !13 433 438 warning --> test/src/e2e_vm_tests/test_programs/should_pass/language/logging/src/main.sw:27:5 diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/match_expressions_all/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/match_expressions_all/stdout.snap index 85e9ff170da..d28bedc0691 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/match_expressions_all/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/match_expressions_all/stdout.snap @@ -7,7 +7,7 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/language/match_expressions_all Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-assert) Compiling script match_expressions_all (test/src/e2e_vm_tests/test_programs/should_pass/language/match_expressions_all) - Finished debug [unoptimized + fuel] target(s) [2.84 KB] in ??? + Finished debug [unoptimized + fuel] target(s) [2.776 KB] in ??? > forc build --path test/src/e2e_vm_tests/test_programs/should_pass/language/match_expressions_all --ir final --asm final --release | filter-fn match_expressions_all return_match_on_str_slice @@ -21,70 +21,70 @@ fn return_match_on_str_slice_8(mut param: __ptr slice) -> u64 { local slice __matched_value_1 entry(mut param: __ptr slice): - v263v1 = get_local __ptr slice, __matched_value_1 - mem_copy_val v263v1, param - v265v1 = get_global __ptr string<5>, __const_global - v266v1 = cast_ptr v265v1 to ptr - v267v1 = get_local __ptr { ptr, u64 }, __anon_0 - v268v1 = const u64 0 - v269v1 = get_elem_ptr v267v1, __ptr ptr, v268v1 - store v266v1 to v269v1 - v271v1 = const u64 1 - v272v1 = get_elem_ptr v267v1, __ptr u64, v271v1 - v273v1 = const u64 5 - store v273v1 to v272v1 - v275v1 = get_local __ptr slice, __anon_1 - mem_copy_bytes v275v1, v267v1, 16 - v277v1 = call eq_9(param, v275v1) - v278v1 = const u64 1 - cbr v277v1, block8(v278v1), block1() + v257v1 = get_local __ptr slice, __matched_value_1 + mem_copy_val v257v1, param + v259v1 = get_global __ptr string<5>, __const_global + v260v1 = cast_ptr v259v1 to ptr + v261v1 = get_local __ptr { ptr, u64 }, __anon_0 + v262v1 = const u64 0 + v263v1 = get_elem_ptr v261v1, __ptr ptr, v262v1 + store v260v1 to v263v1 + v265v1 = const u64 1 + v266v1 = get_elem_ptr v261v1, __ptr u64, v265v1 + v267v1 = const u64 5 + store v267v1 to v266v1 + v269v1 = get_local __ptr slice, __anon_1 + mem_copy_bytes v269v1, v261v1, 16 + v271v1 = call eq_9(param, v269v1) + v272v1 = const u64 1 + cbr v271v1, block8(v272v1), block1() block1(): - v280v1 = get_global __ptr string<7>, __const_global0 - v281v1 = cast_ptr v280v1 to ptr - v282v1 = get_local __ptr { ptr, u64 }, __anon_2 - v283v1 = const u64 0 - v284v1 = get_elem_ptr v282v1, __ptr ptr, v283v1 - store v281v1 to v284v1 - v286v1 = const u64 1 - v287v1 = get_elem_ptr v282v1, __ptr u64, v286v1 - v288v1 = const u64 7 - store v288v1 to v287v1 - v290v1 = get_local __ptr slice, __anon_3 - mem_copy_bytes v290v1, v282v1, 16 - v292v1 = call eq_9(v263v1, v290v1) - v293v1 = const u64 2 - cbr v292v1, block7(v293v1), block3() + v274v1 = get_global __ptr string<7>, __const_global0 + v275v1 = cast_ptr v274v1 to ptr + v276v1 = get_local __ptr { ptr, u64 }, __anon_2 + v277v1 = const u64 0 + v278v1 = get_elem_ptr v276v1, __ptr ptr, v277v1 + store v275v1 to v278v1 + v280v1 = const u64 1 + v281v1 = get_elem_ptr v276v1, __ptr u64, v280v1 + v282v1 = const u64 7 + store v282v1 to v281v1 + v284v1 = get_local __ptr slice, __anon_3 + mem_copy_bytes v284v1, v276v1, 16 + v286v1 = call eq_9(v257v1, v284v1) + v287v1 = const u64 2 + cbr v286v1, block7(v287v1), block3() block3(): - v295v1 = get_global __ptr string<5>, __const_global1 - v296v1 = cast_ptr v295v1 to ptr - v297v1 = get_local __ptr { ptr, u64 }, __anon_4 - v298v1 = const u64 0 - v299v1 = get_elem_ptr v297v1, __ptr ptr, v298v1 - store v296v1 to v299v1 - v301v1 = const u64 1 - v302v1 = get_elem_ptr v297v1, __ptr u64, v301v1 - v303v1 = const u64 5 - store v303v1 to v302v1 - v305v1 = get_local __ptr slice, __anon_5 - mem_copy_bytes v305v1, v297v1, 16 - v307v1 = call eq_9(v263v1, v305v1) - v308v1 = const u64 3 - cbr v307v1, block6(v308v1), block5() + v289v1 = get_global __ptr string<5>, __const_global1 + v290v1 = cast_ptr v289v1 to ptr + v291v1 = get_local __ptr { ptr, u64 }, __anon_4 + v292v1 = const u64 0 + v293v1 = get_elem_ptr v291v1, __ptr ptr, v292v1 + store v290v1 to v293v1 + v295v1 = const u64 1 + v296v1 = get_elem_ptr v291v1, __ptr u64, v295v1 + v297v1 = const u64 5 + store v297v1 to v296v1 + v299v1 = get_local __ptr slice, __anon_5 + mem_copy_bytes v299v1, v291v1, 16 + v301v1 = call eq_9(v257v1, v299v1) + v302v1 = const u64 3 + cbr v301v1, block6(v302v1), block5() block5(): - v310v1 = const u64 1000 - br block6(v310v1) + v304v1 = const u64 1000 + br block6(v304v1) - block6(mut v260v1: u64): - br block7(v260v1) + block6(mut v254v1: u64): + br block7(v254v1) - block7(mut v261v1: u64): - br block8(v261v1) + block7(mut v255v1: u64): + br block8(v255v1) - block8(mut v262v1: u64): - ret u64 v262v1 + block8(mut v256v1: u64): + ret u64 v256v1 } diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panic_handling_in_unit_tests/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panic_handling_in_unit_tests/stdout.snap index 6b09427aacc..894475d9695 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panic_handling_in_unit_tests/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panic_handling_in_unit_tests/stdout.snap @@ -18,7 +18,7 @@ warning: Error message is empty ____ Compiled script "panic_handling_in_unit_tests" with 1 warning. - Finished debug [unoptimized + fuel] target(s) [7.936 KB] in ??? + Finished debug [unoptimized + fuel] target(s) [7.928 KB] in ??? Running 2 tests, filtered 18 tests tested -- panic_handling_in_unit_tests @@ -31,7 +31,7 @@ tested -- panic_handling_in_unit_tests AsciiString { data: "This is a log from the passing test." }, log rb: 10098701174489624218 42, log rb: 1515152261580153489 raw logs: -[{"LogData":{"data":"0000000000000024546869732069732061206c6f672066726f6d207468652070617373696e6720746573742e","digest":"29d742ad9093cdf81404ff756467a44448729b85ab3c0d65197829fb61d2dd29","id":"0000000000000000000000000000000000000000000000000000000000000000","is":10368,"len":44,"pc":10832,"ptr":67107840,"ra":0,"rb":10098701174489624218}},{"LogData":{"data":"000000000000002a","digest":"a6bb133cb1e3638ad7b8a3ff0539668e9e56f9b850ef1b2a810f5422eaa6c323","id":"0000000000000000000000000000000000000000000000000000000000000000","is":10368,"len":8,"pc":15456,"ptr":19056,"ra":0,"rb":1515152261580153489}}] +[{"LogData":{"data":"0000000000000024546869732069732061206c6f672066726f6d207468652070617373696e6720746573742e","digest":"29d742ad9093cdf81404ff756467a44448729b85ab3c0d65197829fb61d2dd29","id":"0000000000000000000000000000000000000000000000000000000000000000","is":10368,"len":44,"pc":10832,"ptr":67107840,"ra":0,"rb":10098701174489624218}},{"LogData":{"data":"000000000000002a","digest":"a6bb133cb1e3638ad7b8a3ff0539668e9e56f9b850ef1b2a810f5422eaa6c323","id":"0000000000000000000000000000000000000000000000000000000000000000","is":10368,"len":8,"pc":15456,"ptr":19048,"ra":0,"rb":1515152261580153489}}] test passing_no_dbgs_or_logs ... ok (???, 69 gas) test result: OK. 2 passed; 0 failed; finished in ??? @@ -55,7 +55,7 @@ warning: Error message is empty ____ Compiled script "panic_handling_in_unit_tests" with 1 warning. - Finished debug [unoptimized + fuel] target(s) [7.936 KB] in ??? + Finished debug [unoptimized + fuel] target(s) [7.928 KB] in ??? Running 20 tests, filtered 0 tests tested -- panic_handling_in_unit_tests @@ -150,7 +150,7 @@ AsciiString { data: "We will get logged the asserted values and this message." } "is": 10368, "len": 8, "pc": 15456, - "ptr": 19008, + "ptr": 19000, "ra": 0, "rb": 1515152261580153489 } @@ -163,7 +163,7 @@ AsciiString { data: "We will get logged the asserted values and this message." } "is": 10368, "len": 8, "pc": 15456, - "ptr": 19008, + "ptr": 19000, "ra": 0, "rb": 1515152261580153489 } @@ -203,7 +203,7 @@ AsciiString { data: "We will get logged the asserted values and this message." } "is": 10368, "len": 8, "pc": 15456, - "ptr": 19000, + "ptr": 18992, "ra": 0, "rb": 1515152261580153489 } @@ -216,7 +216,7 @@ AsciiString { data: "We will get logged the asserted values and this message." } "is": 10368, "len": 8, "pc": 15456, - "ptr": 19000, + "ptr": 18992, "ra": 0, "rb": 1515152261580153489 } @@ -287,7 +287,7 @@ B(true), log rb: 8516346929033386016 "is": 10368, "len": 0, "pc": 13264, - "ptr": 18560, + "ptr": 18552, "ra": 0, "rb": 3330666440490685604 } @@ -312,7 +312,7 @@ B(true), log rb: 8516346929033386016 "is": 10368, "len": 0, "pc": 13316, - "ptr": 18560, + "ptr": 18552, "ra": 0, "rb": 3330666440490685604 } diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_contract/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_contract/stdout.snap index ab92f855202..fbd0bce3b56 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_contract/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_contract/stdout.snap @@ -142,17 +142,17 @@ output: Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling library panicking_lib (test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_lib) Compiling contract panicking_contract (test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_contract) - Finished release [optimized + fuel] target(s) [5.744 KB] in ??? + Finished release [optimized + fuel] target(s) [5.736 KB] in ??? Running 12 tests, filtered 0 tests tested -- panicking_contract - test test_panicking_in_contract_self_impl ... ok (???, 1087 gas) + test test_panicking_in_contract_self_impl ... ok (???, 1086 gas) revert code: 8280000000000000 ├─ panic message: panicking in contract self impl └─ panicked: in ::panicking_in_contract_self_impl └─ at panicking_contract@1.2.3, src/main.sw:22:9 - test test_directly_panicking_method ... ok (???, 1835 gas) + test test_directly_panicking_method ... ok (???, 1834 gas) revert code: 8200000000000000 ├─ panic message: Error C. ├─ panic value: C(true) @@ -160,7 +160,7 @@ tested -- panicking_contract └─ at panicking_contract@1.2.3, src/main.sw:28:9 decoded log values: C(true), log rb: 5503570629422409978 - test test_nested_panic_inlined ... ok (???, 2258 gas) + test test_nested_panic_inlined ... ok (???, 2257 gas) revert code: 8000000000000000 ├─ panic message: Error E. ├─ panic value: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]) @@ -168,7 +168,7 @@ C(true), log rb: 5503570629422409978 └─ at panicking_lib, src/lib.sw:35:5 decoded log values: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]), log rb: 5503570629422409978 - test test_nested_panic_inlined_same_revert_code ... ok (???, 2258 gas) + test test_nested_panic_inlined_same_revert_code ... ok (???, 2257 gas) revert code: 8000000000000000 ├─ panic message: Error E. ├─ panic value: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]) @@ -176,7 +176,7 @@ E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString └─ at panicking_lib, src/lib.sw:35:5 decoded log values: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]), log rb: 5503570629422409978 - test test_nested_panic_non_inlined ... ok (???, 2287 gas) + test test_nested_panic_non_inlined ... ok (???, 2286 gas) revert code: 8180000000000000 ├─ panic message: Error E. ├─ panic value: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]) @@ -184,7 +184,7 @@ E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString └─ at panicking_lib, src/lib.sw:41:9 decoded log values: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]), log rb: 5503570629422409978 - test test_nested_panic_non_inlined_same_revert_code ... ok (???, 2287 gas) + test test_nested_panic_non_inlined_same_revert_code ... ok (???, 2286 gas) revert code: 8180000000000000 ├─ panic message: Error E. ├─ panic value: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]) @@ -192,35 +192,35 @@ E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { d └─ at panicking_lib, src/lib.sw:41:9 decoded log values: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]), log rb: 5503570629422409978 - test test_generic_panic_with_unit ... ok (???, 1543 gas) + test test_generic_panic_with_unit ... ok (???, 1542 gas) revert code: 8100000000000000 ├─ panic value: () └─ panicked: in panicking_lib::generic_panic └─ at panicking_lib, src/lib.sw:74:5 decoded log values: (), log rb: 3330666440490685604 - test test_generic_panic_with_unit_same_revert_code ... ok (???, 1543 gas) + test test_generic_panic_with_unit_same_revert_code ... ok (???, 1542 gas) revert code: 8100000000000000 ├─ panic value: () └─ panicked: in panicking_lib::generic_panic └─ at panicking_lib, src/lib.sw:74:5 decoded log values: (), log rb: 3330666440490685604 - test test_generic_panic_with_str ... ok (???, 1741 gas) + test test_generic_panic_with_str ... ok (???, 1722 gas) revert code: 8080000000000000 ├─ panic message: generic panic with string └─ panicked: in panicking_lib::generic_panic └─ at panicking_lib, src/lib.sw:74:5 decoded log values: AsciiString { data: "generic panic with string" }, log rb: 10098701174489624218 - test test_generic_panic_with_different_str_same_revert_code ... ok (???, 1784 gas) + test test_generic_panic_with_different_str_same_revert_code ... ok (???, 1765 gas) revert code: 8080000000000000 ├─ panic message: generic panic with different string └─ panicked: in panicking_lib::generic_panic └─ at panicking_lib, src/lib.sw:74:5 decoded log values: AsciiString { data: "generic panic with different string" }, log rb: 10098701174489624218 - test test_generic_panic_with_error_type_enum ... ok (???, 1769 gas) + test test_generic_panic_with_error_type_enum ... ok (???, 1768 gas) revert code: 8300000000000000 ├─ panic message: Error A. ├─ panic value: A @@ -228,7 +228,7 @@ AsciiString { data: "generic panic with different string" }, log rb: 10098701174 └─ at panicking_lib, src/lib.sw:74:5 decoded log values: A, log rb: 5503570629422409978 - test test_generic_panic_with_error_type_enum_different_variant_same_revert_code ... ok (???, 1861 gas) + test test_generic_panic_with_error_type_enum_different_variant_same_revert_code ... ok (???, 1860 gas) revert code: 8300000000000000 ├─ panic message: Error B. ├─ panic value: B(42) diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_lib/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_lib/stdout.snap index b2dfbed7317..eafff682bcf 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_lib/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_lib/stdout.snap @@ -182,12 +182,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_lib Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling library panicking_lib (test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_lib) - Finished release [optimized + fuel] target(s) [3.904 KB] in ??? + Finished release [optimized + fuel] target(s) [3.976 KB] in ??? Running 18 tests, filtered 0 tests tested -- panicking_lib - test test_nested_panic_inlined ... ok (???, 1271 gas) + test test_nested_panic_inlined ... ok (???, 1246 gas) revert code: 8000000000000000 ├─ panic message: Error E. ├─ panic value: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]) @@ -195,7 +195,7 @@ tested -- panicking_lib └─ at panicking_lib, src/lib.sw:35:5 decoded log values: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]), log rb: 2721958641300806892 - test test_nested_panic_inlined_same_revert_code ... ok (???, 1271 gas) + test test_nested_panic_inlined_same_revert_code ... ok (???, 1246 gas) revert code: 8000000000000000 ├─ panic message: Error E. ├─ panic value: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]) @@ -203,7 +203,7 @@ E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString └─ at panicking_lib, src/lib.sw:35:5 decoded log values: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]), log rb: 2721958641300806892 - test test_nested_panic_non_inlined ... ok (???, 1289 gas) + test test_nested_panic_non_inlined ... ok (???, 1266 gas) revert code: 8080000000000000 ├─ panic message: Error E. ├─ panic value: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]) @@ -211,7 +211,7 @@ E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString └─ at panicking_lib, src/lib.sw:41:9 decoded log values: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]), log rb: 2721958641300806892 - test test_nested_panic_non_inlined_same_revert_code ... ok (???, 1289 gas) + test test_nested_panic_non_inlined_same_revert_code ... ok (???, 1266 gas) revert code: 8080000000000000 ├─ panic message: Error E. ├─ panic value: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]) @@ -233,21 +233,21 @@ E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { d └─ at panicking_lib, src/lib.sw:74:5 decoded log values: (), log rb: 3330666440490685604 - test test_generic_panic_with_str ... ok (???, 737 gas) + test test_generic_panic_with_str ... ok (???, 719 gas) revert code: 8180000000000000 ├─ panic message: generic panic with string └─ panicked: in panicking_lib::generic_panic └─ at panicking_lib, src/lib.sw:74:5 decoded log values: AsciiString { data: "generic panic with string" }, log rb: 10098701174489624218 - test test_generic_panic_with_different_str_same_revert_code ... ok (???, 738 gas) + test test_generic_panic_with_different_str_same_revert_code ... ok (???, 720 gas) revert code: 8180000000000000 ├─ panic message: generic panic different string └─ panicked: in panicking_lib::generic_panic └─ at panicking_lib, src/lib.sw:74:5 decoded log values: AsciiString { data: "generic panic different string" }, log rb: 10098701174489624218 - test test_generic_panic_with_error_type_enum_variant ... ok (???, 750 gas) + test test_generic_panic_with_error_type_enum_variant ... ok (???, 725 gas) revert code: 8200000000000000 ├─ panic message: Error A. ├─ panic value: A @@ -255,7 +255,7 @@ AsciiString { data: "generic panic different string" }, log rb: 1009870117448962 └─ at panicking_lib, src/lib.sw:74:5 decoded log values: A, log rb: 2721958641300806892 - test test_generic_panic_with_error_type_enum_different_variant_same_revert_code ... ok (???, 750 gas) + test test_generic_panic_with_error_type_enum_different_variant_same_revert_code ... ok (???, 725 gas) revert code: 8200000000000000 ├─ panic message: Error A. ├─ panic value: A @@ -282,7 +282,7 @@ A, log rb: 2721958641300806892 ├─ panic message: panic with string └─ panicked: in panicking_lib::test_panic_with_str └─ at panicking_lib, src/lib.sw:123:5 - test test_panic_with_error_type_enum ... ok (???, 855 gas) + test test_panic_with_error_type_enum ... ok (???, 830 gas) revert code: 8400000000000000 ├─ panic message: Error C. ├─ panic value: C(true) diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_script/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_script/stdout.snap index 9b72c34f6bf..c9d6515bbef 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_script/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_script/stdout.snap @@ -196,14 +196,14 @@ E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { d └─ at panicking_lib, src/lib.sw:74:5 decoded log values: (), log rb: 3330666440490685604 - test test_generic_panic_with_str ... ok (???, 737 gas) + test test_generic_panic_with_str ... ok (???, 719 gas) revert code: 8200000000000000 ├─ panic message: generic panic with string └─ panicked: in panicking_lib::generic_panic └─ at panicking_lib, src/lib.sw:74:5 decoded log values: AsciiString { data: "generic panic with string" }, log rb: 10098701174489624218 - test test_generic_panic_with_different_str_same_revert_code ... ok (???, 740 gas) + test test_generic_panic_with_different_str_same_revert_code ... ok (???, 722 gas) revert code: 8200000000000000 ├─ panic message: generic panic with different string └─ panicked: in panicking_lib::generic_panic diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/optimisations/no_locbase/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/optimisations/no_locbase/stdout.snap index 0dddc56bd78..ddbe4d1b158 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/optimisations/no_locbase/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/optimisations/no_locbase/stdout.snap @@ -11,372 +11,328 @@ pshh i530432 ; [fn init: check_no_locals_no_call_args_spills_24 move $$locbase $sp ; [fn init: check_no_locals_no_call_args_spills_24]: set locals base register cfei i520 ; [fn init: check_no_locals_no_call_args_spills_24]: allocate: locals 0 byte(s), call args 0 slot(s), register spills 520 byte(s) move $r0 $$arg0 ; [fn init: check_no_locals_no_call_args_spills_24]: copy argument 0 (a) -sw $$locbase $r0 i43 ; [spill/refill]: spill +sw $$locbase $r0 i0 ; [spill/refill]: spill move $r0 $$reta ; [fn init: check_no_locals_no_call_args_spills_24]: save return address -sw $$locbase $r0 i44 ; [spill/refill]: spill +sw $$locbase $r0 i1 ; [spill/refill]: spill jal $$reta $pc i448 ; [call: dummy_25]: call function move $r0 $$retv ; [call: dummy_25]: copy returned value -sw $$locbase $r0 i45 ; [spill/refill]: spill -lw $r0 $$locbase i43 ; [spill/refill]: refill from spill +sw $$locbase $r0 i2 ; [spill/refill]: spill +lw $r0 $$locbase i0 ; [spill/refill]: refill from spill move $$arg0 $r0 ; [call: dummy_25]: pass argument 0 jal $$reta $pc i443 ; [call: dummy_25]: call function move $r1 $$retv ; [call: dummy_25]: copy returned value -sw $$locbase $r1 i46 ; [spill/refill]: spill -lw $r0 $$locbase i43 ; [spill/refill]: refill from spill +sw $$locbase $r1 i3 ; [spill/refill]: spill +lw $r0 $$locbase i0 ; [spill/refill]: refill from spill move $$arg0 $r0 ; [call: dummy_25]: pass argument 0 jal $$reta $pc i438 ; [call: dummy_25]: call function -move $r1 $$retv ; [call: dummy_25]: copy returned value -sw $$locbase $r1 i47 ; [spill/refill]: spill -lw $r0 $$locbase i43 ; [spill/refill]: refill from spill +move $r0 $$retv ; [call: dummy_25]: copy returned value +sw $$locbase $r0 i4 ; [spill/refill]: spill +lw $r0 $$locbase i0 ; [spill/refill]: refill from spill move $$arg0 $r0 ; [call: dummy_25]: pass argument 0 jal $$reta $pc i433 ; [call: dummy_25]: call function -move $r1 $$retv ; [call: dummy_25]: copy returned value -sw $$locbase $r1 i48 ; [spill/refill]: spill -lw $r0 $$locbase i43 ; [spill/refill]: refill from spill +move $r0 $$retv ; [call: dummy_25]: copy returned value +sw $$locbase $r0 i5 ; [spill/refill]: spill +lw $r0 $$locbase i0 ; [spill/refill]: refill from spill move $$arg0 $r0 ; [call: dummy_25]: pass argument 0 jal $$reta $pc i428 ; [call: dummy_25]: call function -move $r1 $$retv ; [call: dummy_25]: copy returned value -sw $$locbase $r1 i49 ; [spill/refill]: spill -lw $r0 $$locbase i43 ; [spill/refill]: refill from spill +move $r0 $$retv ; [call: dummy_25]: copy returned value +sw $$locbase $r0 i6 ; [spill/refill]: spill +lw $r0 $$locbase i0 ; [spill/refill]: refill from spill move $$arg0 $r0 ; [call: dummy_25]: pass argument 0 jal $$reta $pc i423 ; [call: dummy_25]: call function -move $r1 $$retv ; [call: dummy_25]: copy returned value -sw $$locbase $r1 i50 ; [spill/refill]: spill -lw $r0 $$locbase i43 ; [spill/refill]: refill from spill +move $r0 $$retv ; [call: dummy_25]: copy returned value +sw $$locbase $r0 i7 ; [spill/refill]: spill +lw $r0 $$locbase i0 ; [spill/refill]: refill from spill move $$arg0 $r0 ; [call: dummy_25]: pass argument 0 jal $$reta $pc i418 ; [call: dummy_25]: call function -move $r1 $$retv ; [call: dummy_25]: copy returned value -sw $$locbase $r1 i51 ; [spill/refill]: spill -lw $r0 $$locbase i43 ; [spill/refill]: refill from spill +move $r0 $$retv ; [call: dummy_25]: copy returned value +sw $$locbase $r0 i8 ; [spill/refill]: spill +lw $r0 $$locbase i0 ; [spill/refill]: refill from spill move $$arg0 $r0 ; [call: dummy_25]: pass argument 0 jal $$reta $pc i413 ; [call: dummy_25]: call function -move $r1 $$retv ; [call: dummy_25]: copy returned value -sw $$locbase $r1 i52 ; [spill/refill]: spill -lw $r0 $$locbase i43 ; [spill/refill]: refill from spill +move $r0 $$retv ; [call: dummy_25]: copy returned value +sw $$locbase $r0 i9 ; [spill/refill]: spill +lw $r0 $$locbase i0 ; [spill/refill]: refill from spill move $$arg0 $r0 ; [call: dummy_25]: pass argument 0 jal $$reta $pc i408 ; [call: dummy_25]: call function -move $r1 $$retv ; [call: dummy_25]: copy returned value -sw $$locbase $r1 i53 ; [spill/refill]: spill -lw $r0 $$locbase i43 ; [spill/refill]: refill from spill +move $r0 $$retv ; [call: dummy_25]: copy returned value +sw $$locbase $r0 i10 ; [spill/refill]: spill +lw $r0 $$locbase i0 ; [spill/refill]: refill from spill move $$arg0 $r0 ; [call: dummy_25]: pass argument 0 jal $$reta $pc i403 ; [call: dummy_25]: call function -move $r1 $$retv ; [call: dummy_25]: copy returned value -sw $$locbase $r1 i54 ; [spill/refill]: spill -lw $r0 $$locbase i43 ; [spill/refill]: refill from spill +move $r0 $$retv ; [call: dummy_25]: copy returned value +sw $$locbase $r0 i11 ; [spill/refill]: spill +lw $r0 $$locbase i0 ; [spill/refill]: refill from spill move $$arg0 $r0 ; [call: dummy_25]: pass argument 0 jal $$reta $pc i398 ; [call: dummy_25]: call function -move $r1 $$retv ; [call: dummy_25]: copy returned value -sw $$locbase $r1 i55 ; [spill/refill]: spill -lw $r0 $$locbase i43 ; [spill/refill]: refill from spill +move $r0 $$retv ; [call: dummy_25]: copy returned value +sw $$locbase $r0 i12 ; [spill/refill]: spill +lw $r0 $$locbase i0 ; [spill/refill]: refill from spill move $$arg0 $r0 ; [call: dummy_25]: pass argument 0 jal $$reta $pc i393 ; [call: dummy_25]: call function -move $r1 $$retv ; [call: dummy_25]: copy returned value -sw $$locbase $r1 i56 ; [spill/refill]: spill -lw $r0 $$locbase i43 ; [spill/refill]: refill from spill +move $r0 $$retv ; [call: dummy_25]: copy returned value +sw $$locbase $r0 i13 ; [spill/refill]: spill +lw $r0 $$locbase i0 ; [spill/refill]: refill from spill move $$arg0 $r0 ; [call: dummy_25]: pass argument 0 jal $$reta $pc i388 ; [call: dummy_25]: call function -move $r1 $$retv ; [call: dummy_25]: copy returned value -sw $$locbase $r1 i57 ; [spill/refill]: spill -lw $r0 $$locbase i43 ; [spill/refill]: refill from spill +move $r0 $$retv ; [call: dummy_25]: copy returned value +sw $$locbase $r0 i14 ; [spill/refill]: spill +lw $r0 $$locbase i0 ; [spill/refill]: refill from spill move $$arg0 $r0 ; [call: dummy_25]: pass argument 0 jal $$reta $pc i383 ; [call: dummy_25]: call function -move $r1 $$retv ; [call: dummy_25]: copy returned value -sw $$locbase $r1 i58 ; [spill/refill]: spill -lw $r0 $$locbase i43 ; [spill/refill]: refill from spill +move $r0 $$retv ; [call: dummy_25]: copy returned value +sw $$locbase $r0 i15 ; [spill/refill]: spill +lw $r0 $$locbase i0 ; [spill/refill]: refill from spill move $$arg0 $r0 ; [call: dummy_25]: pass argument 0 jal $$reta $pc i378 ; [call: dummy_25]: call function -move $r1 $$retv ; [call: dummy_25]: copy returned value -sw $$locbase $r1 i59 ; [spill/refill]: spill -lw $r0 $$locbase i43 ; [spill/refill]: refill from spill +move $r0 $$retv ; [call: dummy_25]: copy returned value +sw $$locbase $r0 i16 ; [spill/refill]: spill +lw $r0 $$locbase i0 ; [spill/refill]: refill from spill move $$arg0 $r0 ; [call: dummy_25]: pass argument 0 jal $$reta $pc i373 ; [call: dummy_25]: call function -move $r1 $$retv ; [call: dummy_25]: copy returned value -sw $$locbase $r1 i60 ; [spill/refill]: spill -lw $r0 $$locbase i43 ; [spill/refill]: refill from spill +move $r0 $$retv ; [call: dummy_25]: copy returned value +sw $$locbase $r0 i17 ; [spill/refill]: spill +lw $r0 $$locbase i0 ; [spill/refill]: refill from spill move $$arg0 $r0 ; [call: dummy_25]: pass argument 0 jal $$reta $pc i368 ; [call: dummy_25]: call function -move $r1 $$retv ; [call: dummy_25]: copy returned value -sw $$locbase $r1 i61 ; [spill/refill]: spill -lw $r0 $$locbase i43 ; [spill/refill]: refill from spill +move $r0 $$retv ; [call: dummy_25]: copy returned value +sw $$locbase $r0 i18 ; [spill/refill]: spill +lw $r0 $$locbase i0 ; [spill/refill]: refill from spill move $$arg0 $r0 ; [call: dummy_25]: pass argument 0 jal $$reta $pc i363 ; [call: dummy_25]: call function -move $r1 $$retv ; [call: dummy_25]: copy returned value -sw $$locbase $r1 i62 ; [spill/refill]: spill -lw $r0 $$locbase i43 ; [spill/refill]: refill from spill +move $r0 $$retv ; [call: dummy_25]: copy returned value +sw $$locbase $r0 i19 ; [spill/refill]: spill +lw $r0 $$locbase i0 ; [spill/refill]: refill from spill move $$arg0 $r0 ; [call: dummy_25]: pass argument 0 jal $$reta $pc i358 ; [call: dummy_25]: call function -move $r1 $$retv ; [call: dummy_25]: copy returned value -sw $$locbase $r1 i63 ; [spill/refill]: spill -lw $r0 $$locbase i43 ; [spill/refill]: refill from spill +move $r0 $$retv ; [call: dummy_25]: copy returned value +sw $$locbase $r0 i20 ; [spill/refill]: spill +lw $r0 $$locbase i0 ; [spill/refill]: refill from spill move $$arg0 $r0 ; [call: dummy_25]: pass argument 0 jal $$reta $pc i353 ; [call: dummy_25]: call function -move $r1 $$retv ; [call: dummy_25]: copy returned value -sw $$locbase $r1 i64 ; [spill/refill]: spill -lw $r0 $$locbase i43 ; [spill/refill]: refill from spill +move $r0 $$retv ; [call: dummy_25]: copy returned value +sw $$locbase $r0 i21 ; [spill/refill]: spill +lw $r0 $$locbase i0 ; [spill/refill]: refill from spill move $$arg0 $r0 ; [call: dummy_25]: pass argument 0 jal $$reta $pc i348 ; [call: dummy_25]: call function move $r0 $$retv ; [call: dummy_25]: copy returned value -sw $$locbase $r0 i0 ; [spill/refill]: spill -lw $r0 $$locbase i43 ; [spill/refill]: refill from spill +sw $$locbase $r0 i22 ; [spill/refill]: spill +lw $r0 $$locbase i0 ; [spill/refill]: refill from spill move $$arg0 $r0 ; [call: dummy_25]: pass argument 0 jal $$reta $pc i343 ; [call: dummy_25]: call function move $r0 $$retv ; [call: dummy_25]: copy returned value -sw $$locbase $r0 i1 ; [spill/refill]: spill -lw $r0 $$locbase i43 ; [spill/refill]: refill from spill +sw $$locbase $r0 i23 ; [spill/refill]: spill +lw $r0 $$locbase i0 ; [spill/refill]: refill from spill move $$arg0 $r0 ; [call: dummy_25]: pass argument 0 jal $$reta $pc i338 ; [call: dummy_25]: call function move $r0 $$retv ; [call: dummy_25]: copy returned value -sw $$locbase $r0 i2 ; [spill/refill]: spill -lw $r0 $$locbase i43 ; [spill/refill]: refill from spill +sw $$locbase $r0 i24 ; [spill/refill]: spill +lw $r0 $$locbase i0 ; [spill/refill]: refill from spill move $$arg0 $r0 ; [call: dummy_25]: pass argument 0 jal $$reta $pc i333 ; [call: dummy_25]: call function move $r0 $$retv ; [call: dummy_25]: copy returned value -sw $$locbase $r0 i3 ; [spill/refill]: spill -lw $r0 $$locbase i43 ; [spill/refill]: refill from spill +sw $$locbase $r0 i25 ; [spill/refill]: spill +lw $r0 $$locbase i0 ; [spill/refill]: refill from spill move $$arg0 $r0 ; [call: dummy_25]: pass argument 0 jal $$reta $pc i328 ; [call: dummy_25]: call function move $r0 $$retv ; [call: dummy_25]: copy returned value -sw $$locbase $r0 i4 ; [spill/refill]: spill -lw $r0 $$locbase i43 ; [spill/refill]: refill from spill +sw $$locbase $r0 i26 ; [spill/refill]: spill +lw $r0 $$locbase i0 ; [spill/refill]: refill from spill move $$arg0 $r0 ; [call: dummy_25]: pass argument 0 jal $$reta $pc i323 ; [call: dummy_25]: call function move $r0 $$retv ; [call: dummy_25]: copy returned value -sw $$locbase $r0 i5 ; [spill/refill]: spill -lw $r0 $$locbase i43 ; [spill/refill]: refill from spill +sw $$locbase $r0 i27 ; [spill/refill]: spill +lw $r0 $$locbase i0 ; [spill/refill]: refill from spill move $$arg0 $r0 ; [call: dummy_25]: pass argument 0 jal $$reta $pc i318 ; [call: dummy_25]: call function move $r0 $$retv ; [call: dummy_25]: copy returned value -sw $$locbase $r0 i6 ; [spill/refill]: spill -lw $r0 $$locbase i43 ; [spill/refill]: refill from spill +sw $$locbase $r0 i28 ; [spill/refill]: spill +lw $r0 $$locbase i0 ; [spill/refill]: refill from spill move $$arg0 $r0 ; [call: dummy_25]: pass argument 0 jal $$reta $pc i313 ; [call: dummy_25]: call function move $r0 $$retv ; [call: dummy_25]: copy returned value -sw $$locbase $r0 i7 ; [spill/refill]: spill -lw $r0 $$locbase i43 ; [spill/refill]: refill from spill +sw $$locbase $r0 i29 ; [spill/refill]: spill +lw $r0 $$locbase i0 ; [spill/refill]: refill from spill move $$arg0 $r0 ; [call: dummy_25]: pass argument 0 jal $$reta $pc i308 ; [call: dummy_25]: call function move $r0 $$retv ; [call: dummy_25]: copy returned value -sw $$locbase $r0 i8 ; [spill/refill]: spill -lw $r0 $$locbase i43 ; [spill/refill]: refill from spill +sw $$locbase $r0 i30 ; [spill/refill]: spill +lw $r0 $$locbase i0 ; [spill/refill]: refill from spill move $$arg0 $r0 ; [call: dummy_25]: pass argument 0 jal $$reta $pc i303 ; [call: dummy_25]: call function move $r0 $$retv ; [call: dummy_25]: copy returned value -sw $$locbase $r0 i9 ; [spill/refill]: spill -lw $r0 $$locbase i43 ; [spill/refill]: refill from spill +sw $$locbase $r0 i31 ; [spill/refill]: spill +lw $r0 $$locbase i0 ; [spill/refill]: refill from spill move $$arg0 $r0 ; [call: dummy_25]: pass argument 0 jal $$reta $pc i298 ; [call: dummy_25]: call function move $r0 $$retv ; [call: dummy_25]: copy returned value -sw $$locbase $r0 i10 ; [spill/refill]: spill -lw $r0 $$locbase i43 ; [spill/refill]: refill from spill +sw $$locbase $r0 i32 ; [spill/refill]: spill +lw $r0 $$locbase i0 ; [spill/refill]: refill from spill move $$arg0 $r0 ; [call: dummy_25]: pass argument 0 jal $$reta $pc i293 ; [call: dummy_25]: call function move $r0 $$retv ; [call: dummy_25]: copy returned value -sw $$locbase $r0 i11 ; [spill/refill]: spill -lw $r0 $$locbase i43 ; [spill/refill]: refill from spill +sw $$locbase $r0 i33 ; [spill/refill]: spill +lw $r0 $$locbase i0 ; [spill/refill]: refill from spill move $$arg0 $r0 ; [call: dummy_25]: pass argument 0 jal $$reta $pc i288 ; [call: dummy_25]: call function move $r0 $$retv ; [call: dummy_25]: copy returned value -sw $$locbase $r0 i12 ; [spill/refill]: spill -lw $r0 $$locbase i43 ; [spill/refill]: refill from spill +sw $$locbase $r0 i34 ; [spill/refill]: spill +lw $r0 $$locbase i0 ; [spill/refill]: refill from spill move $$arg0 $r0 ; [call: dummy_25]: pass argument 0 jal $$reta $pc i283 ; [call: dummy_25]: call function move $r0 $$retv ; [call: dummy_25]: copy returned value -sw $$locbase $r0 i13 ; [spill/refill]: spill -lw $r0 $$locbase i43 ; [spill/refill]: refill from spill +sw $$locbase $r0 i35 ; [spill/refill]: spill +lw $r0 $$locbase i0 ; [spill/refill]: refill from spill move $$arg0 $r0 ; [call: dummy_25]: pass argument 0 jal $$reta $pc i278 ; [call: dummy_25]: call function move $r0 $$retv ; [call: dummy_25]: copy returned value -sw $$locbase $r0 i14 ; [spill/refill]: spill -lw $r0 $$locbase i43 ; [spill/refill]: refill from spill +sw $$locbase $r0 i36 ; [spill/refill]: spill +lw $r0 $$locbase i0 ; [spill/refill]: refill from spill move $$arg0 $r0 ; [call: dummy_25]: pass argument 0 jal $$reta $pc i273 ; [call: dummy_25]: call function move $r0 $$retv ; [call: dummy_25]: copy returned value -sw $$locbase $r0 i15 ; [spill/refill]: spill -lw $r0 $$locbase i43 ; [spill/refill]: refill from spill +sw $$locbase $r0 i37 ; [spill/refill]: spill +lw $r0 $$locbase i0 ; [spill/refill]: refill from spill move $$arg0 $r0 ; [call: dummy_25]: pass argument 0 jal $$reta $pc i268 ; [call: dummy_25]: call function move $r0 $$retv ; [call: dummy_25]: copy returned value -sw $$locbase $r0 i16 ; [spill/refill]: spill -lw $r0 $$locbase i43 ; [spill/refill]: refill from spill +sw $$locbase $r0 i38 ; [spill/refill]: spill +lw $r0 $$locbase i0 ; [spill/refill]: refill from spill move $$arg0 $r0 ; [call: dummy_25]: pass argument 0 jal $$reta $pc i263 ; [call: dummy_25]: call function move $r0 $$retv ; [call: dummy_25]: copy returned value -sw $$locbase $r0 i17 ; [spill/refill]: spill -lw $r0 $$locbase i43 ; [spill/refill]: refill from spill +sw $$locbase $r0 i39 ; [spill/refill]: spill +lw $r0 $$locbase i0 ; [spill/refill]: refill from spill move $$arg0 $r0 ; [call: dummy_25]: pass argument 0 jal $$reta $pc i258 ; [call: dummy_25]: call function move $r0 $$retv ; [call: dummy_25]: copy returned value -sw $$locbase $r0 i18 ; [spill/refill]: spill -lw $r0 $$locbase i43 ; [spill/refill]: refill from spill +sw $$locbase $r0 i40 ; [spill/refill]: spill +lw $r0 $$locbase i0 ; [spill/refill]: refill from spill move $$arg0 $r0 ; [call: dummy_25]: pass argument 0 jal $$reta $pc i253 ; [call: dummy_25]: call function move $r0 $$retv ; [call: dummy_25]: copy returned value -sw $$locbase $r0 i19 ; [spill/refill]: spill -lw $r0 $$locbase i43 ; [spill/refill]: refill from spill +sw $$locbase $r0 i41 ; [spill/refill]: spill +lw $r0 $$locbase i0 ; [spill/refill]: refill from spill move $$arg0 $r0 ; [call: dummy_25]: pass argument 0 jal $$reta $pc i248 ; [call: dummy_25]: call function move $r0 $$retv ; [call: dummy_25]: copy returned value -sw $$locbase $r0 i20 ; [spill/refill]: spill -lw $r0 $$locbase i43 ; [spill/refill]: refill from spill +sw $$locbase $r0 i42 ; [spill/refill]: spill +lw $r0 $$locbase i0 ; [spill/refill]: refill from spill move $$arg0 $r0 ; [call: dummy_25]: pass argument 0 jal $$reta $pc i243 ; [call: dummy_25]: call function move $r0 $$retv ; [call: dummy_25]: copy returned value -sw $$locbase $r0 i21 ; [spill/refill]: spill -lw $r0 $$locbase i43 ; [spill/refill]: refill from spill +sw $$locbase $r0 i43 ; [spill/refill]: spill +lw $r0 $$locbase i0 ; [spill/refill]: refill from spill move $$arg0 $r0 ; [call: dummy_25]: pass argument 0 jal $$reta $pc i238 ; [call: dummy_25]: call function move $r0 $$retv ; [call: dummy_25]: copy returned value -sw $$locbase $r0 i22 ; [spill/refill]: spill -lw $r0 $$locbase i43 ; [spill/refill]: refill from spill +sw $$locbase $r0 i44 ; [spill/refill]: spill +lw $r0 $$locbase i0 ; [spill/refill]: refill from spill move $$arg0 $r0 ; [call: dummy_25]: pass argument 0 jal $$reta $pc i233 ; [call: dummy_25]: call function move $r0 $$retv ; [call: dummy_25]: copy returned value -sw $$locbase $r0 i23 ; [spill/refill]: spill -lw $r0 $$locbase i43 ; [spill/refill]: refill from spill +sw $$locbase $r0 i45 ; [spill/refill]: spill +lw $r0 $$locbase i0 ; [spill/refill]: refill from spill move $$arg0 $r0 ; [call: dummy_25]: pass argument 0 jal $$reta $pc i228 ; [call: dummy_25]: call function move $r0 $$retv ; [call: dummy_25]: copy returned value -sw $$locbase $r0 i24 ; [spill/refill]: spill -lw $r0 $$locbase i43 ; [spill/refill]: refill from spill +sw $$locbase $r0 i46 ; [spill/refill]: spill +lw $r0 $$locbase i0 ; [spill/refill]: refill from spill move $$arg0 $r0 ; [call: dummy_25]: pass argument 0 jal $$reta $pc i223 ; [call: dummy_25]: call function move $r0 $$retv ; [call: dummy_25]: copy returned value -sw $$locbase $r0 i25 ; [spill/refill]: spill -lw $r0 $$locbase i43 ; [spill/refill]: refill from spill +sw $$locbase $r0 i47 ; [spill/refill]: spill +lw $r0 $$locbase i0 ; [spill/refill]: refill from spill move $$arg0 $r0 ; [call: dummy_25]: pass argument 0 jal $$reta $pc i218 ; [call: dummy_25]: call function move $r0 $$retv ; [call: dummy_25]: copy returned value -sw $$locbase $r0 i26 ; [spill/refill]: spill -lw $r0 $$locbase i43 ; [spill/refill]: refill from spill +sw $$locbase $r0 i48 ; [spill/refill]: spill +lw $r0 $$locbase i0 ; [spill/refill]: refill from spill move $$arg0 $r0 ; [call: dummy_25]: pass argument 0 jal $$reta $pc i213 ; [call: dummy_25]: call function move $r0 $$retv ; [call: dummy_25]: copy returned value -sw $$locbase $r0 i27 ; [spill/refill]: spill -lw $r0 $$locbase i43 ; [spill/refill]: refill from spill +sw $$locbase $r0 i49 ; [spill/refill]: spill +lw $r0 $$locbase i0 ; [spill/refill]: refill from spill move $$arg0 $r0 ; [call: dummy_25]: pass argument 0 jal $$reta $pc i208 ; [call: dummy_25]: call function move $r0 $$retv ; [call: dummy_25]: copy returned value -sw $$locbase $r0 i28 ; [spill/refill]: spill -lw $r0 $$locbase i43 ; [spill/refill]: refill from spill +sw $$locbase $r0 i50 ; [spill/refill]: spill +lw $r0 $$locbase i0 ; [spill/refill]: refill from spill move $$arg0 $r0 ; [call: dummy_25]: pass argument 0 jal $$reta $pc i203 ; [call: dummy_25]: call function move $r0 $$retv ; [call: dummy_25]: copy returned value -sw $$locbase $r0 i29 ; [spill/refill]: spill -lw $r0 $$locbase i43 ; [spill/refill]: refill from spill +sw $$locbase $r0 i51 ; [spill/refill]: spill +lw $r0 $$locbase i0 ; [spill/refill]: refill from spill move $$arg0 $r0 ; [call: dummy_25]: pass argument 0 jal $$reta $pc i198 ; [call: dummy_25]: call function move $r0 $$retv ; [call: dummy_25]: copy returned value -sw $$locbase $r0 i30 ; [spill/refill]: spill -lw $r0 $$locbase i43 ; [spill/refill]: refill from spill +sw $$locbase $r0 i52 ; [spill/refill]: spill +lw $r0 $$locbase i0 ; [spill/refill]: refill from spill move $$arg0 $r0 ; [call: dummy_25]: pass argument 0 jal $$reta $pc i193 ; [call: dummy_25]: call function move $r0 $$retv ; [call: dummy_25]: copy returned value -sw $$locbase $r0 i31 ; [spill/refill]: spill -lw $r0 $$locbase i43 ; [spill/refill]: refill from spill +sw $$locbase $r0 i53 ; [spill/refill]: spill +lw $r0 $$locbase i0 ; [spill/refill]: refill from spill move $$arg0 $r0 ; [call: dummy_25]: pass argument 0 jal $$reta $pc i188 ; [call: dummy_25]: call function move $r0 $$retv ; [call: dummy_25]: copy returned value -sw $$locbase $r0 i32 ; [spill/refill]: spill -lw $r0 $$locbase i43 ; [spill/refill]: refill from spill +sw $$locbase $r0 i54 ; [spill/refill]: spill +lw $r0 $$locbase i0 ; [spill/refill]: refill from spill move $$arg0 $r0 ; [call: dummy_25]: pass argument 0 jal $$reta $pc i183 ; [call: dummy_25]: call function move $r0 $$retv ; [call: dummy_25]: copy returned value -sw $$locbase $r0 i33 ; [spill/refill]: spill -lw $r0 $$locbase i43 ; [spill/refill]: refill from spill +sw $$locbase $r0 i55 ; [spill/refill]: spill +lw $r0 $$locbase i0 ; [spill/refill]: refill from spill move $$arg0 $r0 ; [call: dummy_25]: pass argument 0 jal $$reta $pc i178 ; [call: dummy_25]: call function move $r0 $$retv ; [call: dummy_25]: copy returned value -sw $$locbase $r0 i34 ; [spill/refill]: spill -lw $r0 $$locbase i43 ; [spill/refill]: refill from spill +sw $$locbase $r0 i56 ; [spill/refill]: spill +lw $r0 $$locbase i0 ; [spill/refill]: refill from spill move $$arg0 $r0 ; [call: dummy_25]: pass argument 0 jal $$reta $pc i173 ; [call: dummy_25]: call function move $r0 $$retv ; [call: dummy_25]: copy returned value -sw $$locbase $r0 i35 ; [spill/refill]: spill -lw $r0 $$locbase i43 ; [spill/refill]: refill from spill +sw $$locbase $r0 i57 ; [spill/refill]: spill +lw $r0 $$locbase i0 ; [spill/refill]: refill from spill move $$arg0 $r0 ; [call: dummy_25]: pass argument 0 jal $$reta $pc i168 ; [call: dummy_25]: call function move $r0 $$retv ; [call: dummy_25]: copy returned value -sw $$locbase $r0 i36 ; [spill/refill]: spill -lw $r0 $$locbase i43 ; [spill/refill]: refill from spill +sw $$locbase $r0 i58 ; [spill/refill]: spill +lw $r0 $$locbase i0 ; [spill/refill]: refill from spill move $$arg0 $r0 ; [call: dummy_25]: pass argument 0 jal $$reta $pc i163 ; [call: dummy_25]: call function move $r0 $$retv ; [call: dummy_25]: copy returned value -sw $$locbase $r0 i37 ; [spill/refill]: spill -lw $r0 $$locbase i43 ; [spill/refill]: refill from spill +sw $$locbase $r0 i59 ; [spill/refill]: spill +lw $r0 $$locbase i0 ; [spill/refill]: refill from spill move $$arg0 $r0 ; [call: dummy_25]: pass argument 0 jal $$reta $pc i158 ; [call: dummy_25]: call function move $r0 $$retv ; [call: dummy_25]: copy returned value -sw $$locbase $r0 i38 ; [spill/refill]: spill -lw $r0 $$locbase i43 ; [spill/refill]: refill from spill +sw $$locbase $r0 i60 ; [spill/refill]: spill +lw $r0 $$locbase i0 ; [spill/refill]: refill from spill move $$arg0 $r0 ; [call: dummy_25]: pass argument 0 jal $$reta $pc i153 ; [call: dummy_25]: call function move $r0 $$retv ; [call: dummy_25]: copy returned value -sw $$locbase $r0 i39 ; [spill/refill]: spill -lw $r0 $$locbase i43 ; [spill/refill]: refill from spill +sw $$locbase $r0 i61 ; [spill/refill]: spill +lw $r0 $$locbase i0 ; [spill/refill]: refill from spill move $$arg0 $r0 ; [call: dummy_25]: pass argument 0 jal $$reta $pc i148 ; [call: dummy_25]: call function move $r0 $$retv ; [call: dummy_25]: copy returned value -sw $$locbase $r0 i40 ; [spill/refill]: spill -lw $r0 $$locbase i43 ; [spill/refill]: refill from spill +sw $$locbase $r0 i62 ; [spill/refill]: spill +lw $r0 $$locbase i0 ; [spill/refill]: refill from spill move $$arg0 $r0 ; [call: dummy_25]: pass argument 0 jal $$reta $pc i143 ; [call: dummy_25]: call function move $r0 $$retv ; [call: dummy_25]: copy returned value -sw $$locbase $r0 i41 ; [spill/refill]: spill -lw $r0 $$locbase i43 ; [spill/refill]: refill from spill +sw $$locbase $r0 i63 ; [spill/refill]: spill +lw $r0 $$locbase i0 ; [spill/refill]: refill from spill move $$arg0 $r0 ; [call: dummy_25]: pass argument 0 jal $$reta $pc i138 ; [call: dummy_25]: call function move $r0 $$retv ; [call: dummy_25]: copy returned value -sw $$locbase $r0 i42 ; [spill/refill]: spill -lw $r0 $$locbase i43 ; [spill/refill]: refill from spill +sw $$locbase $r0 i64 ; [spill/refill]: spill +lw $r0 $$locbase i0 ; [spill/refill]: refill from spill move $$arg0 $r0 ; [call: dummy_25]: pass argument 0 jal $$reta $pc i133 ; [call: dummy_25]: call function -lw $r0 $$locbase i45 ; [spill/refill]: refill from spill -lw $r1 $$locbase i46 ; [spill/refill]: refill from spill -add $r0 $r0 $r1 -lw $r1 $$locbase i47 ; [spill/refill]: refill from spill -add $r0 $r0 $r1 -lw $r1 $$locbase i48 ; [spill/refill]: refill from spill -add $r0 $r0 $r1 -lw $r1 $$locbase i49 ; [spill/refill]: refill from spill -add $r0 $r0 $r1 -lw $r1 $$locbase i50 ; [spill/refill]: refill from spill -add $r0 $r0 $r1 -lw $r1 $$locbase i51 ; [spill/refill]: refill from spill -add $r0 $r0 $r1 -lw $r1 $$locbase i52 ; [spill/refill]: refill from spill -add $r0 $r0 $r1 -lw $r1 $$locbase i53 ; [spill/refill]: refill from spill -add $r0 $r0 $r1 -lw $r1 $$locbase i54 ; [spill/refill]: refill from spill -add $r0 $r0 $r1 -lw $r1 $$locbase i55 ; [spill/refill]: refill from spill -add $r0 $r0 $r1 -lw $r1 $$locbase i56 ; [spill/refill]: refill from spill -add $r0 $r0 $r1 -lw $r1 $$locbase i57 ; [spill/refill]: refill from spill -add $r0 $r0 $r1 -lw $r1 $$locbase i58 ; [spill/refill]: refill from spill -add $r0 $r0 $r1 -lw $r1 $$locbase i59 ; [spill/refill]: refill from spill -add $r0 $r0 $r1 -lw $r1 $$locbase i60 ; [spill/refill]: refill from spill -add $r0 $r0 $r1 -lw $r1 $$locbase i61 ; [spill/refill]: refill from spill -add $r0 $r0 $r1 -lw $r1 $$locbase i62 ; [spill/refill]: refill from spill -add $r0 $r0 $r1 -lw $r1 $$locbase i63 ; [spill/refill]: refill from spill -add $r0 $r0 $r1 -lw $r1 $$locbase i64 ; [spill/refill]: refill from spill -add $r1 $r0 $r1 -lw $r0 $$locbase i0 ; [spill/refill]: refill from spill -add $r1 $r1 $r0 -lw $r0 $$locbase i1 ; [spill/refill]: refill from spill -add $r1 $r1 $r0 lw $r0 $$locbase i2 ; [spill/refill]: refill from spill -add $r1 $r1 $r0 -lw $r0 $$locbase i3 ; [spill/refill]: refill from spill -add $r1 $r1 $r0 +lw $r1 $$locbase i3 ; [spill/refill]: refill from spill +add $r1 $r0 $r1 lw $r0 $$locbase i4 ; [spill/refill]: refill from spill add $r1 $r1 $r0 lw $r0 $$locbase i5 ; [spill/refill]: refill from spill @@ -454,11 +410,55 @@ add $r1 $r1 $r0 lw $r0 $$locbase i41 ; [spill/refill]: refill from spill add $r1 $r1 $r0 lw $r0 $$locbase i42 ; [spill/refill]: refill from spill +add $r1 $r1 $r0 +lw $r0 $$locbase i43 ; [spill/refill]: refill from spill +add $r1 $r1 $r0 +lw $r0 $$locbase i44 ; [spill/refill]: refill from spill +add $r1 $r1 $r0 +lw $r0 $$locbase i45 ; [spill/refill]: refill from spill +add $r1 $r1 $r0 +lw $r0 $$locbase i46 ; [spill/refill]: refill from spill +add $r1 $r1 $r0 +lw $r0 $$locbase i47 ; [spill/refill]: refill from spill +add $r1 $r1 $r0 +lw $r0 $$locbase i48 ; [spill/refill]: refill from spill +add $r1 $r1 $r0 +lw $r0 $$locbase i49 ; [spill/refill]: refill from spill +add $r1 $r1 $r0 +lw $r0 $$locbase i50 ; [spill/refill]: refill from spill +add $r1 $r1 $r0 +lw $r0 $$locbase i51 ; [spill/refill]: refill from spill +add $r1 $r1 $r0 +lw $r0 $$locbase i52 ; [spill/refill]: refill from spill +add $r1 $r1 $r0 +lw $r0 $$locbase i53 ; [spill/refill]: refill from spill +add $r1 $r1 $r0 +lw $r0 $$locbase i54 ; [spill/refill]: refill from spill +add $r1 $r1 $r0 +lw $r0 $$locbase i55 ; [spill/refill]: refill from spill +add $r1 $r1 $r0 +lw $r0 $$locbase i56 ; [spill/refill]: refill from spill +add $r1 $r1 $r0 +lw $r0 $$locbase i57 ; [spill/refill]: refill from spill +add $r1 $r1 $r0 +lw $r0 $$locbase i58 ; [spill/refill]: refill from spill +add $r1 $r1 $r0 +lw $r0 $$locbase i59 ; [spill/refill]: refill from spill +add $r1 $r1 $r0 +lw $r0 $$locbase i60 ; [spill/refill]: refill from spill +add $r1 $r1 $r0 +lw $r0 $$locbase i61 ; [spill/refill]: refill from spill +add $r1 $r1 $r0 +lw $r0 $$locbase i62 ; [spill/refill]: refill from spill +add $r1 $r1 $r0 +lw $r0 $$locbase i63 ; [spill/refill]: refill from spill +add $r1 $r1 $r0 +lw $r0 $$locbase i64 ; [spill/refill]: refill from spill add $r0 $r1 $r0 add $r0 $r0 $$retv move $$retv $r0 ; [fn end: check_no_locals_no_call_args_spills_24] set return value cfsi i520 ; [fn end: check_no_locals_no_call_args_spills_24] free: locals 0 byte(s), call args 0 slot(s), register spills 520 byte(s) -lw $r0 $$locbase i44 ; [spill/refill]: refill from spill +lw $r0 $$locbase i1 ; [spill/refill]: refill from spill move $$reta $r0 ; [fn end: check_no_locals_no_call_args_spills_24] restore return address poph i530432 ; [fn end: check_no_locals_no_call_args_spills_24]: restore used high registers 40..64 jal $zero $$reta i0 ; [fn end: check_no_locals_no_call_args_spills_24] return from call diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/basic_storage/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/basic_storage/stdout.snap index b45d263bb9a..6dec06804f2 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/basic_storage/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/basic_storage/stdout.snap @@ -11,35 +11,35 @@ pub fn unwrap_84(mut self: __ptr { u64, ( () | b256 ) }, mut __ret_value: __ptr local u64 other_ entry(mut self: __ptr { u64, ( () | b256 ) }, mut __ret_value: __ptr b256): - v7334v1 = get_local __ptr { u64, ( () | b256 ) }, __matched_value_4 - mem_copy_val v7334v1, self - v7336v1 = const u64 0 - v7337v1 = get_elem_ptr self, __ptr u64, v7336v1 + v7330v1 = get_local __ptr { u64, ( () | b256 ) }, __matched_value_4 + mem_copy_val v7330v1, self + v7332v1 = const u64 0 + v7333v1 = get_elem_ptr self, __ptr u64, v7332v1 + v7334v1 = get_local __ptr u64, other_ + v7335v1 = const u64 1 + store v7335v1 to v7334v1 + v7337v1 = load v7333v1 v7338v1 = get_local __ptr u64, other_ - v7339v1 = const u64 1 - store v7339v1 to v7338v1 - v7341v1 = load v7337v1 - v7342v1 = get_local __ptr u64, other_ - v7343v1 = load v7342v1 - v7344v1 = cmp eq v7341v1 v7343v1 - cbr v7344v1, block0(), block1() + v7339v1 = load v7338v1 + v7340v1 = cmp eq v7337v1 v7339v1 + cbr v7340v1, block0(), block1() block0(): - v7346v1 = get_local __ptr { u64, ( () | b256 ) }, __matched_value_4 - v7347v1 = const u64 1 - v7348v1 = const u64 1 - v7349v1 = get_elem_ptr v7346v1, __ptr b256, v7347v1, v7348v1 - mem_copy_val __ret_value, v7349v1 - v7351v1 = const unit () - ret () v7351v1 + v7342v1 = get_local __ptr { u64, ( () | b256 ) }, __matched_value_4 + v7343v1 = const u64 1 + v7344v1 = const u64 1 + v7345v1 = get_elem_ptr v7342v1, __ptr b256, v7343v1, v7344v1 + mem_copy_val __ret_value, v7345v1 + v7347v1 = const unit () + ret () v7347v1 block1(): - v7353v1 = get_local __ptr u64, code_ - v7354v1 = const u64 0 - store v7354v1 to v7353v1 - v7356v1 = get_local __ptr u64, code_ - v7357v1 = load v7356v1 - revert v7357v1 + v7349v1 = get_local __ptr u64, code_ + v7350v1 = const u64 0 + store v7350v1 to v7349v1 + v7352v1 = get_local __ptr u64, code_ + v7353v1 = load v7352v1 + revert v7353v1 } diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call/stdout.snap index b77244df672..dee3bc50d9d 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call/stdout.snap @@ -7,44 +7,44 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-vec) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) - Finished release [optimized + fuel] target(s) [19.408 KB] in ??? + Finished release [optimized + fuel] target(s) [19.144 KB] in ??? Running 33 tests, filtered 0 tests tested -- const_of_contract_call - test cost_of_in_bool ... ok (???, 1736 gas) - test cost_of_in_u8 ... ok (???, 1704 gas) - test cost_of_in_u16 ... ok (???, 1779 gas) - test cost_of_in_u32 ... ok (???, 1888 gas) - test cost_of_in_u64 ... ok (???, 1522 gas) - test cost_of_in_u256 ... ok (???, 1603 gas) - test cost_of_in_b256 ... ok (???, 1593 gas) - test cost_of_in_str_0 ... ok (???, 1890 gas) - test cost_of_in_str_1 ... ok (???, 2007 gas) - test cost_of_in_str_8 ... ok (???, 2014 gas) - test cost_of_in_str_16 ... ok (???, 2011 gas) - test cost_of_in_str_32 ... ok (???, 2021 gas) - test cost_of_in_array_0 ... ok (???, 1550 gas) - test cost_of_in_array_1 ... ok (???, 1602 gas) - test cost_of_in_array_8 ... ok (???, 2110 gas) - test cost_of_in_array_16 ... ok (???, 1642 gas) - test cost_of_in_array_32 ... ok (???, 1691 gas) - test cost_of_in_array_64 ... ok (???, 1784 gas) - test cost_of_in_tuple_0 ... ok (???, 1520 gas) - test cost_of_in_tuple_1 ... ok (???, 1637 gas) - test cost_of_in_tuple_2 ... ok (???, 1655 gas) - test cost_of_in_tuple_3 ... ok (???, 1663 gas) - test cost_of_in_tuple_4 ... ok (???, 1650 gas) - test in_struct_u64 ... ok (???, 1625 gas) - test in_struct_u64_u64 ... ok (???, 1650 gas) - test in_struct_u64_u64_u64 ... ok (???, 1666 gas) - test in_enum_u64 ... ok (???, 1621 gas) - test in_enum_u64_u64 ... ok (???, 1623 gas) - test in_enum_u64_u64_u64 ... ok (???, 1636 gas) - test in_vec_trivial ... ok (???, 2669 gas) - test in_vec_not_trivial ... ok (???, 5868 gas) - test order_args_without_trivial_enum ... ok (???, 3049 gas) - test order_args_with_trivial_enum ... ok (???, 3213 gas) + test cost_of_in_bool ... ok (???, 1737 gas) + test cost_of_in_u8 ... ok (???, 1705 gas) + test cost_of_in_u16 ... ok (???, 1777 gas) + test cost_of_in_u32 ... ok (???, 1886 gas) + test cost_of_in_u64 ... ok (???, 1521 gas) + test cost_of_in_u256 ... ok (???, 1604 gas) + test cost_of_in_b256 ... ok (???, 1594 gas) + test cost_of_in_str_0 ... ok (???, 1857 gas) + test cost_of_in_str_1 ... ok (???, 1976 gas) + test cost_of_in_str_8 ... ok (???, 1985 gas) + test cost_of_in_str_16 ... ok (???, 1982 gas) + test cost_of_in_str_32 ... ok (???, 1992 gas) + test cost_of_in_array_0 ... ok (???, 1551 gas) + test cost_of_in_array_1 ... ok (???, 1603 gas) + test cost_of_in_array_8 ... ok (???, 2111 gas) + test cost_of_in_array_16 ... ok (???, 1643 gas) + test cost_of_in_array_32 ... ok (???, 1692 gas) + test cost_of_in_array_64 ... ok (???, 1785 gas) + test cost_of_in_tuple_0 ... ok (???, 1519 gas) + test cost_of_in_tuple_1 ... ok (???, 1623 gas) + test cost_of_in_tuple_2 ... ok (???, 1641 gas) + test cost_of_in_tuple_3 ... ok (???, 1649 gas) + test cost_of_in_tuple_4 ... ok (???, 1652 gas) + test in_struct_u64 ... ok (???, 1611 gas) + test in_struct_u64_u64 ... ok (???, 1637 gas) + test in_struct_u64_u64_u64 ... ok (???, 1652 gas) + test in_enum_u64 ... ok (???, 1618 gas) + test in_enum_u64_u64 ... ok (???, 1621 gas) + test in_enum_u64_u64_u64 ... ok (???, 1633 gas) + test in_vec_trivial ... ok (???, 2626 gas) + test in_vec_not_trivial ... ok (???, 5862 gas) + test order_args_without_trivial_enum ... ok (???, 3021 gas) + test order_args_with_trivial_enum ... ok (???, 3207 gas) test result: OK. 33 passed; 0 failed; finished in ??? @@ -219,12 +219,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-vec) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) - Finished release [optimized + fuel] target(s) [664 B] in ??? + Finished release [optimized + fuel] target(s) [648 B] in ??? Running 1 test, filtered 0 tests tested -- const_of_contract_call - test in_enum_u64 ... ok (???, 1429 gas) + test in_enum_u64 ... ok (???, 1425 gas) test result: OK. 1 passed; 0 failed; finished in ??? @@ -239,12 +239,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-vec) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) - Finished release [optimized + fuel] target(s) [704 B] in ??? + Finished release [optimized + fuel] target(s) [688 B] in ??? Running 1 test, filtered 0 tests tested -- const_of_contract_call - test in_enum_u64_u64 ... ok (???, 1435 gas) + test in_enum_u64_u64 ... ok (???, 1431 gas) test result: OK. 1 passed; 0 failed; finished in ??? @@ -259,12 +259,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-vec) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) - Finished release [optimized + fuel] target(s) [768 B] in ??? + Finished release [optimized + fuel] target(s) [752 B] in ??? Running 1 test, filtered 0 tests tested -- const_of_contract_call - test in_enum_u64_u64_u64 ... ok (???, 1436 gas) + test in_enum_u64_u64_u64 ... ok (???, 1432 gas) test result: OK. 1 passed; 0 failed; finished in ??? @@ -279,12 +279,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-vec) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) - Finished release [optimized + fuel] target(s) [1.992 KB] in ??? + Finished release [optimized + fuel] target(s) [1.952 KB] in ??? Running 1 test, filtered 0 tests tested -- const_of_contract_call - test order_args_without_trivial_enum ... ok (???, 2822 gas) + test order_args_without_trivial_enum ... ok (???, 2792 gas) test result: OK. 1 passed; 0 failed; finished in ??? @@ -299,12 +299,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-vec) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) - Finished release [optimized + fuel] target(s) [2.288 KB] in ??? + Finished release [optimized + fuel] target(s) [2.256 KB] in ??? Running 1 test, filtered 0 tests tested -- const_of_contract_call - test order_args_with_trivial_enum ... ok (???, 2982 gas) + test order_args_with_trivial_enum ... ok (???, 2975 gas) test result: OK. 1 passed; 0 failed; finished in ??? @@ -319,12 +319,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-vec) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) - Finished release [optimized + fuel] target(s) [1.008 KB] in ??? + Finished release [optimized + fuel] target(s) [1 KB] in ??? Running 1 test, filtered 0 tests tested -- const_of_contract_call - test isolated_cost_of_in_str_0 ... ok (???, 1694 gas) + test isolated_cost_of_in_str_0 ... ok (???, 1695 gas) test result: OK. 1 passed; 0 failed; finished in ??? @@ -479,12 +479,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-vec) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) - Finished release [optimized + fuel] target(s) [480 B] in ??? + Finished release [optimized + fuel] target(s) [472 B] in ??? Running 1 test, filtered 0 tests tested -- const_of_contract_call - test isolated_cost_of_in_tuple_0 ... ok (???, 1334 gas) + test isolated_cost_of_in_tuple_0 ... ok (???, 1332 gas) test result: OK. 1 passed; 0 failed; finished in ??? @@ -559,7 +559,7 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-vec) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) - Finished release [optimized + fuel] target(s) [752 B] in ??? + Finished release [optimized + fuel] target(s) [640 B] in ??? Running 1 test, filtered 0 tests tested -- const_of_contract_call @@ -639,12 +639,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-vec) Compiling contract const_of_contract_call (test/src/e2e_vm_tests/test_programs/should_pass/test_contracts/const_of_contract_call) - Finished release [optimized + fuel] target(s) [504 B] in ??? + Finished release [optimized + fuel] target(s) [496 B] in ??? Running 1 test, filtered 0 tests tested -- const_of_contract_call - test isolated_cost_of_in_u64 ... ok (???, 1356 gas) + test isolated_cost_of_in_u64 ... ok (???, 1354 gas) test result: OK. 1 passed; 0 failed; finished in ??? From 5f162af6131a0f3f69708f7d14d5a7b3c549adec Mon Sep 17 00:00:00 2001 From: Daniel Frederico Lins Leite Date: Tue, 14 Jul 2026 07:41:31 -0300 Subject: [PATCH 42/42] update tests --- .../require_contract_deployment/call_basic_storage/src/main.sw | 2 +- .../call_contract_with_type_aliases/src/main.sw | 2 +- .../storage_access_caller/src/main.sw | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/call_basic_storage/src/main.sw b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/call_basic_storage/src/main.sw index f7312e17aa7..595d149275c 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/call_basic_storage/src/main.sw +++ b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/call_basic_storage/src/main.sw @@ -4,7 +4,7 @@ use basic_storage_abi::{BasicStorage, Quad}; #[cfg(experimental_new_encoding = false)] const CONTRACT_ID = 0x94db39f409a31b9f2ebcadeea44378e419208c20de90f5d8e1e33dc1523754cb; #[cfg(experimental_new_encoding = true)] -const CONTRACT_ID = 0x71dee471dbd14f3c26f34a14f0038037c3229512be350c5e2b7b9ce3330af07d; // AUTO-CONTRACT-ID ../../test_contracts/basic_storage --release +const CONTRACT_ID = 0x72268c5dafea4906a600068b1b4cd664ffae5c2e65fc339f11d77ff5a044e0d9; // AUTO-CONTRACT-ID ../../test_contracts/basic_storage --release fn main() -> u64 { let addr = abi(BasicStorage, CONTRACT_ID); diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/call_contract_with_type_aliases/src/main.sw b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/call_contract_with_type_aliases/src/main.sw index 6206007f002..a9d8bf4eaa4 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/call_contract_with_type_aliases/src/main.sw +++ b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/call_contract_with_type_aliases/src/main.sw @@ -5,7 +5,7 @@ use contract_with_type_aliases_abi::*; #[cfg(experimental_new_encoding = false)] const CONTRACT_ID = 0x0cbeb6efe3104b460be769bdc4ea101ebf16ccc16f2d7b667ec3e1c7f5ce35b5; #[cfg(experimental_new_encoding = true)] -const CONTRACT_ID = 0x1abfbea4c0185a800d7241e86e8bdb6e80dc6d38aa5c578eaaa18b7e193dc58a; // AUTO-CONTRACT-ID ../../test_contracts/contract_with_type_aliases --release +const CONTRACT_ID = 0xb6ff0951568fbbc8be3e0bf8738c29120f5a9119b8b9eb833e44b3d139f81b10; // AUTO-CONTRACT-ID ../../test_contracts/contract_with_type_aliases --release fn main() { let caller = abi(MyContract, CONTRACT_ID); diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/storage_access_caller/src/main.sw b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/storage_access_caller/src/main.sw index 2e685f3c24f..0e2f16eab09 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/storage_access_caller/src/main.sw +++ b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/storage_access_caller/src/main.sw @@ -6,7 +6,7 @@ use std::hash::*; #[cfg(experimental_new_encoding = false)] const CONTRACT_ID = 0x3bc28acd66d327b8c1b9624c1fabfc07e9ffa1b5d71c2832c3bfaaf8f4b805e9; #[cfg(experimental_new_encoding = true)] -const CONTRACT_ID = 0x4cc2ff36ff34f5c27e4b93ab1ca17ed0ed6f559d535f74f5eb61b29c0476cf2c; // AUTO-CONTRACT-ID ../../test_contracts/storage_access_contract --release +const CONTRACT_ID = 0x5382a4b19480548c40ec7b712a569a51067ca0fc31896414fc5d2b2b60c877af; // AUTO-CONTRACT-ID ../../test_contracts/storage_access_contract --release fn main() -> bool { let caller = abi(StorageAccess, CONTRACT_ID);