diff --git a/crates/cranelift/src/func_environ/gc.rs b/crates/cranelift/src/func_environ/gc.rs index c81947f4e7fb..efb67682250e 100644 --- a/crates/cranelift/src/func_environ/gc.rs +++ b/crates/cranelift/src/func_environ/gc.rs @@ -1477,8 +1477,29 @@ impl FuncEnvironment<'_> { &mut self, builder: &mut FunctionBuilder, ) -> WasmResult { - let global = self.get_gc_heap_base_global(&mut builder.func); - Ok(builder.ins().global_value(self.pointer_type(), global)) + let pointer_type = self.pointer_type(); + let offset = i32::from(self.offsets.ptr.vmstore_context_gc_heap_base()); + + let mut flags = ir::MemFlagsData::trusted(); + let memory_tunables = + wasmtime_environ::MemoryTunables::new(self.tunables, MemoryKind::GcHeap); + + // If the memory cannot move (i.e. its base pointer cannot change across + // calls) then the base pointer is readonly and this load instruction + // can move (i.e. can be LICM'd out of a loop body). + if !self + .tunables + .gc_heap_memory_type() + .memory_may_move(&memory_tunables) + { + flags.set_readonly(); + flags.set_can_move(); + } + + let store_context_ptr = self.get_vmstore_context_ptr(builder); + Ok(builder + .ins() + .load(pointer_type, flags, store_context_ptr, offset)) } fn get_gc_heap_bound_global(&mut self, func: &mut ir::Function) -> ir::GlobalValue { @@ -1507,8 +1528,15 @@ impl FuncEnvironment<'_> { &mut self, builder: &mut FunctionBuilder, ) -> WasmResult { - let global = self.get_gc_heap_bound_global(&mut builder.func); - Ok(builder.ins().global_value(self.pointer_type(), global)) + let pointer_type = self.pointer_type(); + let offset = i32::from(self.offsets.ptr.vmstore_context_gc_heap_current_length()); + let store_context_ptr = self.get_vmstore_context_ptr(builder); + Ok(builder.ins().load( + pointer_type, + ir::MemFlagsData::trusted(), + store_context_ptr, + offset, + )) } /// Get or create the `Heap` for our GC heap. diff --git a/tests/disas/array-copy-anyref.wat b/tests/disas/array-copy-anyref.wat index 255d71ca2c81..0b0b7fe0726c 100644 --- a/tests/disas/array-copy-anyref.wat +++ b/tests/disas/array-copy-anyref.wat @@ -22,8 +22,8 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32, v4: i32, v5: i32, v6: i32): ;; @002b trapz v2, user16 -;; @002b v115 = load.i64 notrap aligned readonly can_move v0+8 -;; @002b v8 = load.i64 notrap aligned readonly can_move v115+32 +;; @002b v109 = load.i64 notrap aligned readonly can_move v0+8 +;; @002b v8 = load.i64 notrap aligned readonly can_move v109+32 ;; @002b v7 = uextend.i64 v2 ;; @002b v9 = iadd v8, v7 ;; @002b v10 = iconst.i64 16 @@ -36,64 +36,64 @@ ;; @002b v19 = icmp ugt v18, v13 ;; @002b trapnz v19, user17 ;; @002b trapz v4, user16 -;; @002b v29 = uextend.i64 v4 -;; @002b v31 = iadd v8, v29 -;; @002b v33 = iadd v31, v10 ; v10 = 16 -;; @002b v34 = load.i32 user2 readonly region0 v33 -;; @002b v36 = uextend.i64 v5 -;; @002b v40 = iadd v36, v15 -;; @002b v35 = uextend.i64 v34 -;; @002b v41 = icmp ugt v40, v35 -;; @002b trapnz v41, user17 -;; @002b v57 = load.i64 notrap aligned v115+40 -;; @002b v23 = iconst.i64 20 -;; @002b v24 = iadd v9, v23 ; v23 = 20 -;; v119 = iconst.i64 2 -;; v120 = ishl v14, v119 ; v119 = 2 -;; @002b v28 = iadd v24, v120 -;; v124 = ishl v15, v119 ; v119 = 2 -;; @002b v59 = uadd_overflow_trap v28, v124, user2 -;; @002b v58 = iadd v8, v57 -;; @002b v60 = icmp ugt v59, v58 -;; @002b trapnz v60, user2 -;; @002b v46 = iadd v31, v23 ; v23 = 20 -;; v122 = ishl v36, v119 ; v119 = 2 -;; @002b v50 = iadd v46, v122 -;; @002b v64 = uadd_overflow_trap v50, v124, user2 -;; @002b v65 = icmp ugt v64, v58 -;; @002b trapnz v65, user2 +;; @002b v30 = uextend.i64 v4 +;; @002b v32 = iadd v8, v30 +;; @002b v34 = iadd v32, v10 ; v10 = 16 +;; @002b v35 = load.i32 user2 readonly region0 v34 +;; @002b v37 = uextend.i64 v5 +;; @002b v41 = iadd v37, v15 +;; @002b v36 = uextend.i64 v35 +;; @002b v42 = icmp ugt v41, v36 +;; @002b trapnz v42, user17 +;; @002b v61 = load.i64 notrap aligned v109+40 +;; @002b v24 = iconst.i64 20 +;; @002b v25 = iadd v9, v24 ; v24 = 20 +;; v113 = iconst.i64 2 +;; v114 = ishl v14, v113 ; v113 = 2 +;; @002b v29 = iadd v25, v114 +;; v118 = ishl v15, v113 ; v113 = 2 +;; @002b v63 = uadd_overflow_trap v29, v118, user2 +;; @002b v62 = iadd v8, v61 +;; @002b v64 = icmp ugt v63, v62 +;; @002b trapnz v64, user2 +;; @002b v48 = iadd v32, v24 ; v24 = 20 +;; v116 = ishl v37, v113 ; v113 = 2 +;; @002b v52 = iadd v48, v116 +;; @002b v70 = uadd_overflow_trap v52, v118, user2 +;; @002b v71 = icmp ugt v70, v62 +;; @002b trapnz v71, user2 ;; @002b brif v6, block2, block5 ;; ;; block2: -;; @002b v66 = icmp.i64 ult v28, v50 -;; @002b v71 = iadd.i64 v28, v124 -;; @002b v72 = iadd.i64 v50, v124 -;; @002b v74 = iadd.i32 v5, v6 -;; @002b v26 = iconst.i64 4 -;; @002b v97 = iconst.i32 1 -;; @002b brif v66, block3(v28, v50, v5), block4(v71, v72, v74) +;; @002b v72 = icmp.i64 ult v29, v52 +;; @002b v77 = iadd.i64 v29, v118 +;; @002b v78 = iadd.i64 v52, v118 +;; @002b v80 = iadd.i32 v5, v6 +;; @002b v27 = iconst.i64 4 +;; @002b v103 = iconst.i32 1 +;; @002b brif v72, block3(v29, v52, v5), block4(v77, v78, v80) ;; -;; block3(v75: i64, v76: i64, v77: i32): -;; @002b v80 = load.i32 user2 little region0 v76 -;; @002b store user2 little region0 v80, v75 -;; v131 = iconst.i64 4 -;; v132 = iadd v76, v131 ; v131 = 4 -;; @002b v87 = icmp eq v132, v72 -;; v133 = iadd v75, v131 ; v131 = 4 -;; v134 = iconst.i32 1 -;; v135 = iadd v77, v134 ; v134 = 1 -;; @002b brif v87, block5, block3(v133, v132, v135) +;; block3(v81: i64, v82: i64, v83: i32): +;; @002b v86 = load.i32 user2 little region0 v82 +;; @002b store user2 little region0 v86, v81 +;; v125 = iconst.i64 4 +;; v126 = iadd v82, v125 ; v125 = 4 +;; @002b v93 = icmp eq v126, v78 +;; v127 = iadd v81, v125 ; v125 = 4 +;; v128 = iconst.i32 1 +;; v129 = iadd v83, v128 ; v128 = 1 +;; @002b brif v93, block5, block3(v127, v126, v129) ;; -;; block4(v88: i64, v89: i64, v90: i32): -;; v126 = iconst.i64 4 -;; v127 = isub v89, v126 ; v126 = 4 -;; @002b v99 = load.i32 user2 little region0 v127 -;; v128 = isub v88, v126 ; v126 = 4 -;; @002b store user2 little region0 v99, v128 -;; @002b v100 = icmp eq v127, v50 -;; v129 = iconst.i32 1 -;; v130 = isub v90, v129 ; v129 = 1 -;; @002b brif v100, block5, block4(v128, v127, v130) +;; block4(v94: i64, v95: i64, v96: i32): +;; v120 = iconst.i64 4 +;; v121 = isub v95, v120 ; v120 = 4 +;; @002b v105 = load.i32 user2 little region0 v121 +;; v122 = isub v94, v120 ; v120 = 4 +;; @002b store user2 little region0 v105, v122 +;; @002b v106 = icmp eq v121, v52 +;; v123 = iconst.i32 1 +;; v124 = isub v96, v123 ; v123 = 1 +;; @002b brif v106, block5, block4(v122, v121, v124) ;; ;; block5: ;; @002f jump block1 diff --git a/tests/disas/array-copy-i64.wat b/tests/disas/array-copy-i64.wat index 788d1e2beb46..fe03005c7c20 100644 --- a/tests/disas/array-copy-i64.wat +++ b/tests/disas/array-copy-i64.wat @@ -24,8 +24,8 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32, v4: i32, v5: i32, v6: i32): ;; @002b trapz v2, user16 -;; @002b v80 = load.i64 notrap aligned readonly can_move v0+8 -;; @002b v8 = load.i64 notrap aligned readonly can_move v80+32 +;; @002b v74 = load.i64 notrap aligned readonly can_move v0+8 +;; @002b v8 = load.i64 notrap aligned readonly can_move v74+32 ;; @002b v7 = uextend.i64 v2 ;; @002b v9 = iadd v8, v7 ;; @002b v10 = iconst.i64 16 @@ -38,33 +38,33 @@ ;; @002b v19 = icmp ugt v18, v13 ;; @002b trapnz v19, user17 ;; @002b trapz v4, user16 -;; @002b v29 = uextend.i64 v4 -;; @002b v31 = iadd v8, v29 -;; @002b v33 = iadd v31, v10 ; v10 = 16 -;; @002b v34 = load.i32 user2 readonly region0 v33 -;; @002b v36 = uextend.i64 v5 -;; @002b v40 = iadd v36, v15 -;; @002b v35 = uextend.i64 v34 -;; @002b v41 = icmp ugt v40, v35 -;; @002b trapnz v41, user17 -;; @002b v57 = load.i64 notrap aligned v80+40 -;; @002b v23 = iconst.i64 24 -;; @002b v24 = iadd v9, v23 ; v23 = 24 -;; v84 = iconst.i64 3 -;; v85 = ishl v14, v84 ; v84 = 3 -;; @002b v28 = iadd v24, v85 -;; v89 = ishl v15, v84 ; v84 = 3 -;; @002b v59 = uadd_overflow_trap v28, v89, user2 -;; @002b v58 = iadd v8, v57 -;; @002b v60 = icmp ugt v59, v58 -;; @002b trapnz v60, user2 -;; @002b v46 = iadd v31, v23 ; v23 = 24 -;; v87 = ishl v36, v84 ; v84 = 3 -;; @002b v50 = iadd v46, v87 -;; @002b v64 = uadd_overflow_trap v50, v89, user2 -;; @002b v65 = icmp ugt v64, v58 -;; @002b trapnz v65, user2 -;; @002b call fn0(v0, v28, v50, v89) +;; @002b v30 = uextend.i64 v4 +;; @002b v32 = iadd v8, v30 +;; @002b v34 = iadd v32, v10 ; v10 = 16 +;; @002b v35 = load.i32 user2 readonly region0 v34 +;; @002b v37 = uextend.i64 v5 +;; @002b v41 = iadd v37, v15 +;; @002b v36 = uextend.i64 v35 +;; @002b v42 = icmp ugt v41, v36 +;; @002b trapnz v42, user17 +;; @002b v61 = load.i64 notrap aligned v74+40 +;; @002b v24 = iconst.i64 24 +;; @002b v25 = iadd v9, v24 ; v24 = 24 +;; v78 = iconst.i64 3 +;; v79 = ishl v14, v78 ; v78 = 3 +;; @002b v29 = iadd v25, v79 +;; v83 = ishl v15, v78 ; v78 = 3 +;; @002b v63 = uadd_overflow_trap v29, v83, user2 +;; @002b v62 = iadd v8, v61 +;; @002b v64 = icmp ugt v63, v62 +;; @002b trapnz v64, user2 +;; @002b v48 = iadd v32, v24 ; v24 = 24 +;; v81 = ishl v37, v78 ; v78 = 3 +;; @002b v52 = iadd v48, v81 +;; @002b v70 = uadd_overflow_trap v52, v83, user2 +;; @002b v71 = icmp ugt v70, v62 +;; @002b trapnz v71, user2 +;; @002b call fn0(v0, v29, v52, v83) ;; @002f jump block1 ;; ;; block1: diff --git a/tests/disas/array-copy-i8.wat b/tests/disas/array-copy-i8.wat index d062bacce07a..817234072e57 100644 --- a/tests/disas/array-copy-i8.wat +++ b/tests/disas/array-copy-i8.wat @@ -24,8 +24,8 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32, v4: i32, v5: i32, v6: i32): ;; @002b trapz v2, user16 -;; @002b v80 = load.i64 notrap aligned readonly can_move v0+8 -;; @002b v8 = load.i64 notrap aligned readonly can_move v80+32 +;; @002b v74 = load.i64 notrap aligned readonly can_move v0+8 +;; @002b v8 = load.i64 notrap aligned readonly can_move v74+32 ;; @002b v7 = uextend.i64 v2 ;; @002b v9 = iadd v8, v7 ;; @002b v10 = iconst.i64 16 @@ -38,29 +38,29 @@ ;; @002b v19 = icmp ugt v18, v13 ;; @002b trapnz v19, user17 ;; @002b trapz v4, user16 -;; @002b v29 = uextend.i64 v4 -;; @002b v31 = iadd v8, v29 -;; @002b v33 = iadd v31, v10 ; v10 = 16 -;; @002b v34 = load.i32 user2 readonly region0 v33 -;; @002b v36 = uextend.i64 v5 -;; @002b v40 = iadd v36, v15 -;; @002b v35 = uextend.i64 v34 -;; @002b v41 = icmp ugt v40, v35 -;; @002b trapnz v41, user17 -;; @002b v57 = load.i64 notrap aligned v80+40 -;; @002b v23 = iconst.i64 20 -;; @002b v24 = iadd v9, v23 ; v23 = 20 -;; @002b v28 = iadd v24, v14 -;; @002b v59 = uadd_overflow_trap v28, v15, user2 -;; @002b v58 = iadd v8, v57 -;; @002b v60 = icmp ugt v59, v58 -;; @002b trapnz v60, user2 -;; @002b v46 = iadd v31, v23 ; v23 = 20 -;; @002b v50 = iadd v46, v36 -;; @002b v64 = uadd_overflow_trap v50, v15, user2 -;; @002b v65 = icmp ugt v64, v58 -;; @002b trapnz v65, user2 -;; @002b call fn0(v0, v28, v50, v15) +;; @002b v30 = uextend.i64 v4 +;; @002b v32 = iadd v8, v30 +;; @002b v34 = iadd v32, v10 ; v10 = 16 +;; @002b v35 = load.i32 user2 readonly region0 v34 +;; @002b v37 = uextend.i64 v5 +;; @002b v41 = iadd v37, v15 +;; @002b v36 = uextend.i64 v35 +;; @002b v42 = icmp ugt v41, v36 +;; @002b trapnz v42, user17 +;; @002b v61 = load.i64 notrap aligned v74+40 +;; @002b v24 = iconst.i64 20 +;; @002b v25 = iadd v9, v24 ; v24 = 20 +;; @002b v29 = iadd v25, v14 +;; @002b v63 = uadd_overflow_trap v29, v15, user2 +;; @002b v62 = iadd v8, v61 +;; @002b v64 = icmp ugt v63, v62 +;; @002b trapnz v64, user2 +;; @002b v48 = iadd v32, v24 ; v24 = 20 +;; @002b v52 = iadd v48, v37 +;; @002b v70 = uadd_overflow_trap v52, v15, user2 +;; @002b v71 = icmp ugt v70, v62 +;; @002b trapnz v71, user2 +;; @002b call fn0(v0, v29, v52, v15) ;; @002f jump block1 ;; ;; block1: diff --git a/tests/disas/array-copy-inline.wat b/tests/disas/array-copy-inline.wat index d76f6aa6bdde..b67c261b6bb0 100644 --- a/tests/disas/array-copy-inline.wat +++ b/tests/disas/array-copy-inline.wat @@ -28,52 +28,52 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32, v4: i32, v5: i32): ;; @002a trapz v2, user16 -;; @002a v83 = load.i64 notrap aligned readonly can_move v0+8 -;; @002a v8 = load.i64 notrap aligned readonly can_move v83+32 +;; @002a v77 = load.i64 notrap aligned readonly can_move v0+8 +;; @002a v8 = load.i64 notrap aligned readonly can_move v77+32 ;; @002a v7 = uextend.i64 v2 ;; @002a v9 = iadd v8, v7 ;; @002a v10 = iconst.i64 16 ;; @002a v11 = iadd v9, v10 ; v10 = 16 ;; @002a v12 = load.i32 user2 readonly region0 v11 ;; @002a v14 = uextend.i64 v3 -;; v85 = iconst.i64 7 -;; @002a v18 = iadd v14, v85 ; v85 = 7 +;; v79 = iconst.i64 7 +;; @002a v18 = iadd v14, v79 ; v79 = 7 ;; @002a v13 = uextend.i64 v12 ;; @002a v19 = icmp ugt v18, v13 ;; @002a trapnz v19, user17 ;; @002a trapz v4, user16 -;; @002a v29 = uextend.i64 v4 -;; @002a v31 = iadd v8, v29 -;; @002a v33 = iadd v31, v10 ; v10 = 16 -;; @002a v34 = load.i32 user2 readonly region0 v33 -;; @002a v36 = uextend.i64 v5 -;; @002a v40 = iadd v36, v85 ; v85 = 7 -;; @002a v35 = uextend.i64 v34 -;; @002a v41 = icmp ugt v40, v35 -;; @002a trapnz v41, user17 -;; @002a v57 = load.i64 notrap aligned v83+40 -;; @002a v23 = iconst.i64 20 -;; @002a v24 = iadd v9, v23 ; v23 = 20 -;; v93 = iconst.i64 2 -;; v94 = ishl v14, v93 ; v93 = 2 -;; @002a v28 = iadd v24, v94 -;; v98 = iconst.i64 28 -;; @002a v59 = uadd_overflow_trap v28, v98, user2 ; v98 = 28 -;; @002a v58 = iadd v8, v57 -;; @002a v60 = icmp ugt v59, v58 -;; @002a trapnz v60, user2 -;; @002a v46 = iadd v31, v23 ; v23 = 20 -;; v96 = ishl v36, v93 ; v93 = 2 -;; @002a v50 = iadd v46, v96 -;; @002a v64 = uadd_overflow_trap v50, v98, user2 ; v98 = 28 -;; @002a v65 = icmp ugt v64, v58 -;; @002a trapnz v65, user2 -;; @002a v66 = load.i8x16 notrap aligned little v50 -;; @002a v67 = load.i64 notrap aligned little v50+16 -;; @002a v68 = load.i32 notrap aligned little v50+24 -;; @002a store notrap aligned little v66, v28 -;; @002a store notrap aligned little v67, v28+16 -;; @002a store notrap aligned little v68, v28+24 +;; @002a v30 = uextend.i64 v4 +;; @002a v32 = iadd v8, v30 +;; @002a v34 = iadd v32, v10 ; v10 = 16 +;; @002a v35 = load.i32 user2 readonly region0 v34 +;; @002a v37 = uextend.i64 v5 +;; @002a v41 = iadd v37, v79 ; v79 = 7 +;; @002a v36 = uextend.i64 v35 +;; @002a v42 = icmp ugt v41, v36 +;; @002a trapnz v42, user17 +;; @002a v61 = load.i64 notrap aligned v77+40 +;; @002a v24 = iconst.i64 20 +;; @002a v25 = iadd v9, v24 ; v24 = 20 +;; v87 = iconst.i64 2 +;; v88 = ishl v14, v87 ; v87 = 2 +;; @002a v29 = iadd v25, v88 +;; v92 = iconst.i64 28 +;; @002a v63 = uadd_overflow_trap v29, v92, user2 ; v92 = 28 +;; @002a v62 = iadd v8, v61 +;; @002a v64 = icmp ugt v63, v62 +;; @002a trapnz v64, user2 +;; @002a v48 = iadd v32, v24 ; v24 = 20 +;; v90 = ishl v37, v87 ; v87 = 2 +;; @002a v52 = iadd v48, v90 +;; @002a v70 = uadd_overflow_trap v52, v92, user2 ; v92 = 28 +;; @002a v71 = icmp ugt v70, v62 +;; @002a trapnz v71, user2 +;; @002a v72 = load.i8x16 notrap aligned little v52 +;; @002a v73 = load.i64 notrap aligned little v52+16 +;; @002a v74 = load.i32 notrap aligned little v52+24 +;; @002a store notrap aligned little v72, v29 +;; @002a store notrap aligned little v73, v29+16 +;; @002a store notrap aligned little v74, v29+24 ;; @002e jump block1 ;; ;; block1: diff --git a/tests/disas/array-fill-anyref.wat b/tests/disas/array-fill-anyref.wat index fe24c33adfaf..338baa84624e 100644 --- a/tests/disas/array-fill-anyref.wat +++ b/tests/disas/array-fill-anyref.wat @@ -30,8 +30,8 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32, v4: i32, v5: i32): ;; @0030 trapz v2, user16 -;; @0030 v49 = load.i64 notrap aligned readonly can_move v0+8 -;; @0030 v7 = load.i64 notrap aligned readonly can_move v49+32 +;; @0030 v46 = load.i64 notrap aligned readonly can_move v0+8 +;; @0030 v7 = load.i64 notrap aligned readonly can_move v46+32 ;; @0030 v6 = uextend.i64 v2 ;; @0030 v8 = iadd v7, v6 ;; @0030 v9 = iconst.i64 16 @@ -43,29 +43,29 @@ ;; @0030 v12 = uextend.i64 v11 ;; @0030 v18 = icmp ugt v17, v12 ;; @0030 trapnz v18, user17 -;; @0030 v32 = load.i64 notrap aligned v49+40 -;; @0030 v22 = iconst.i64 20 -;; @0030 v23 = iadd v8, v22 ; v22 = 20 -;; v53 = iconst.i64 2 -;; v54 = ishl v13, v53 ; v53 = 2 -;; @0030 v27 = iadd v23, v54 -;; v56 = ishl v14, v53 ; v53 = 2 -;; @0030 v34 = uadd_overflow_trap v27, v56, user2 -;; @0030 v33 = iadd v7, v32 -;; @0030 v35 = icmp ugt v34, v33 -;; @0030 trapnz v35, user2 -;; v51 = iconst.i64 0 -;; @0030 v38 = icmp eq v14, v51 ; v51 = 0 -;; @0030 v25 = iconst.i64 4 -;; @0030 v36 = iadd v27, v56 -;; @0030 brif v38, block3, block2(v27) +;; @0030 v35 = load.i64 notrap aligned v46+40 +;; @0030 v23 = iconst.i64 20 +;; @0030 v24 = iadd v8, v23 ; v23 = 20 +;; v50 = iconst.i64 2 +;; v51 = ishl v13, v50 ; v50 = 2 +;; @0030 v28 = iadd v24, v51 +;; v53 = ishl v14, v50 ; v50 = 2 +;; @0030 v37 = uadd_overflow_trap v28, v53, user2 +;; @0030 v36 = iadd v7, v35 +;; @0030 v38 = icmp ugt v37, v36 +;; @0030 trapnz v38, user2 +;; v48 = iconst.i64 0 +;; @0030 v41 = icmp eq v14, v48 ; v48 = 0 +;; @0030 v26 = iconst.i64 4 +;; @0030 v39 = iadd v28, v53 +;; @0030 brif v41, block3, block2(v28) ;; -;; block2(v39: i64): -;; @0030 store.i32 user2 little region0 v4, v39 -;; v58 = iconst.i64 4 -;; v59 = iadd v39, v58 ; v58 = 4 -;; @0030 v42 = icmp eq v59, v36 -;; @0030 brif v42, block3, block2(v59) +;; block2(v42: i64): +;; @0030 store.i32 user2 little region0 v4, v42 +;; v55 = iconst.i64 4 +;; v56 = iadd v42, v55 ; v55 = 4 +;; @0030 v45 = icmp eq v56, v39 +;; @0030 brif v45, block3, block2(v56) ;; ;; block3: ;; @0033 jump block1 @@ -87,8 +87,8 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32, v4: i32): ;; @003e trapz v2, user16 -;; @003e v49 = load.i64 notrap aligned readonly can_move v0+8 -;; @003e v7 = load.i64 notrap aligned readonly can_move v49+32 +;; @003e v46 = load.i64 notrap aligned readonly can_move v0+8 +;; @003e v7 = load.i64 notrap aligned readonly can_move v46+32 ;; @003e v6 = uextend.i64 v2 ;; @003e v8 = iadd v7, v6 ;; @003e v9 = iconst.i64 16 @@ -100,31 +100,31 @@ ;; @003e v12 = uextend.i64 v11 ;; @003e v18 = icmp ugt v17, v12 ;; @003e trapnz v18, user17 -;; @003e v32 = load.i64 notrap aligned v49+40 -;; @003e v22 = iconst.i64 20 -;; @003e v23 = iadd v8, v22 ; v22 = 20 -;; v53 = iconst.i64 2 -;; v54 = ishl v13, v53 ; v53 = 2 -;; @003e v27 = iadd v23, v54 -;; v56 = ishl v14, v53 ; v53 = 2 -;; @003e v34 = uadd_overflow_trap v27, v56, user2 -;; @003e v33 = iadd v7, v32 -;; @003e v35 = icmp ugt v34, v33 -;; @003e trapnz v35, user2 -;; v51 = iconst.i64 0 -;; @003e v38 = icmp eq v14, v51 ; v51 = 0 +;; @003e v35 = load.i64 notrap aligned v46+40 +;; @003e v23 = iconst.i64 20 +;; @003e v24 = iadd v8, v23 ; v23 = 20 +;; v50 = iconst.i64 2 +;; v51 = ishl v13, v50 ; v50 = 2 +;; @003e v28 = iadd v24, v51 +;; v53 = ishl v14, v50 ; v50 = 2 +;; @003e v37 = uadd_overflow_trap v28, v53, user2 +;; @003e v36 = iadd v7, v35 +;; @003e v38 = icmp ugt v37, v36 +;; @003e trapnz v38, user2 +;; v48 = iconst.i64 0 +;; @003e v41 = icmp eq v14, v48 ; v48 = 0 ;; @003a v5 = iconst.i32 0 -;; @003e v25 = iconst.i64 4 -;; @003e v36 = iadd v27, v56 -;; @003e brif v38, block3, block2(v27) +;; @003e v26 = iconst.i64 4 +;; @003e v39 = iadd v28, v53 +;; @003e brif v41, block3, block2(v28) ;; -;; block2(v39: i64): -;; v58 = iconst.i32 0 -;; @003e store user2 little region0 v58, v39 ; v58 = 0 -;; v59 = iconst.i64 4 -;; v60 = iadd v39, v59 ; v59 = 4 -;; @003e v42 = icmp eq v60, v36 -;; @003e brif v42, block3, block2(v60) +;; block2(v42: i64): +;; v55 = iconst.i32 0 +;; @003e store user2 little region0 v55, v42 ; v55 = 0 +;; v56 = iconst.i64 4 +;; v57 = iadd v42, v56 ; v56 = 4 +;; @003e v45 = icmp eq v57, v39 +;; @003e brif v45, block3, block2(v57) ;; ;; block3: ;; @0041 jump block1 @@ -146,8 +146,8 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32, v4: i32): ;; @004e trapz v2, user16 -;; @004e v53 = load.i64 notrap aligned readonly can_move v0+8 -;; @004e v11 = load.i64 notrap aligned readonly can_move v53+32 +;; @004e v50 = load.i64 notrap aligned readonly can_move v0+8 +;; @004e v11 = load.i64 notrap aligned readonly can_move v50+32 ;; @004e v10 = uextend.i64 v2 ;; @004e v12 = iadd v11, v10 ;; @004e v13 = iconst.i64 16 @@ -159,31 +159,31 @@ ;; @004e v16 = uextend.i64 v15 ;; @004e v22 = icmp ugt v21, v16 ;; @004e trapnz v22, user17 -;; @004e v36 = load.i64 notrap aligned v53+40 -;; @004e v26 = iconst.i64 20 -;; @004e v27 = iadd v12, v26 ; v26 = 20 -;; v63 = iconst.i64 2 -;; v64 = ishl v17, v63 ; v63 = 2 -;; @004e v31 = iadd v27, v64 -;; v66 = ishl v18, v63 ; v63 = 2 -;; @004e v38 = uadd_overflow_trap v31, v66, user2 -;; @004e v37 = iadd v11, v36 -;; @004e v39 = icmp ugt v38, v37 -;; @004e trapnz v39, user2 -;; v61 = iconst.i64 0 -;; @004e v42 = icmp eq v18, v61 ; v61 = 0 +;; @004e v39 = load.i64 notrap aligned v50+40 +;; @004e v27 = iconst.i64 20 +;; @004e v28 = iadd v12, v27 ; v27 = 20 +;; v60 = iconst.i64 2 +;; v61 = ishl v17, v60 ; v60 = 2 +;; @004e v32 = iadd v28, v61 +;; v63 = ishl v18, v60 ; v60 = 2 +;; @004e v41 = uadd_overflow_trap v32, v63, user2 +;; @004e v40 = iadd v11, v39 +;; @004e v42 = icmp ugt v41, v40 +;; @004e trapnz v42, user2 +;; v58 = iconst.i64 0 +;; @004e v45 = icmp eq v18, v58 ; v58 = 0 ;; @0048 v5 = iconst.i32 -1 -;; @004e v29 = iconst.i64 4 -;; @004e v40 = iadd v31, v66 -;; @004e brif v42, block3, block2(v31) +;; @004e v30 = iconst.i64 4 +;; @004e v43 = iadd v32, v63 +;; @004e brif v45, block3, block2(v32) ;; -;; block2(v43: i64): -;; v68 = iconst.i32 -1 -;; @004e store user2 little region0 v68, v43 ; v68 = -1 -;; v69 = iconst.i64 4 -;; v70 = iadd v43, v69 ; v69 = 4 -;; @004e v46 = icmp eq v70, v40 -;; @004e brif v46, block3, block2(v70) +;; block2(v46: i64): +;; v65 = iconst.i32 -1 +;; @004e store user2 little region0 v65, v46 ; v65 = -1 +;; v66 = iconst.i64 4 +;; v67 = iadd v46, v66 ; v66 = 4 +;; @004e v49 = icmp eq v67, v43 +;; @004e brif v49, block3, block2(v67) ;; ;; block3: ;; @0051 jump block1 diff --git a/tests/disas/array-fill-externref.wat b/tests/disas/array-fill-externref.wat index a90a597656a7..b3003e49d2d9 100644 --- a/tests/disas/array-fill-externref.wat +++ b/tests/disas/array-fill-externref.wat @@ -26,8 +26,8 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32, v4: i32, v5: i32): ;; @002f trapz v2, user16 -;; @002f v49 = load.i64 notrap aligned readonly can_move v0+8 -;; @002f v7 = load.i64 notrap aligned readonly can_move v49+32 +;; @002f v46 = load.i64 notrap aligned readonly can_move v0+8 +;; @002f v7 = load.i64 notrap aligned readonly can_move v46+32 ;; @002f v6 = uextend.i64 v2 ;; @002f v8 = iadd v7, v6 ;; @002f v9 = iconst.i64 16 @@ -39,29 +39,29 @@ ;; @002f v12 = uextend.i64 v11 ;; @002f v18 = icmp ugt v17, v12 ;; @002f trapnz v18, user17 -;; @002f v32 = load.i64 notrap aligned v49+40 -;; @002f v22 = iconst.i64 20 -;; @002f v23 = iadd v8, v22 ; v22 = 20 -;; v53 = iconst.i64 2 -;; v54 = ishl v13, v53 ; v53 = 2 -;; @002f v27 = iadd v23, v54 -;; v56 = ishl v14, v53 ; v53 = 2 -;; @002f v34 = uadd_overflow_trap v27, v56, user2 -;; @002f v33 = iadd v7, v32 -;; @002f v35 = icmp ugt v34, v33 -;; @002f trapnz v35, user2 -;; v51 = iconst.i64 0 -;; @002f v38 = icmp eq v14, v51 ; v51 = 0 -;; @002f v25 = iconst.i64 4 -;; @002f v36 = iadd v27, v56 -;; @002f brif v38, block3, block2(v27) +;; @002f v35 = load.i64 notrap aligned v46+40 +;; @002f v23 = iconst.i64 20 +;; @002f v24 = iadd v8, v23 ; v23 = 20 +;; v50 = iconst.i64 2 +;; v51 = ishl v13, v50 ; v50 = 2 +;; @002f v28 = iadd v24, v51 +;; v53 = ishl v14, v50 ; v50 = 2 +;; @002f v37 = uadd_overflow_trap v28, v53, user2 +;; @002f v36 = iadd v7, v35 +;; @002f v38 = icmp ugt v37, v36 +;; @002f trapnz v38, user2 +;; v48 = iconst.i64 0 +;; @002f v41 = icmp eq v14, v48 ; v48 = 0 +;; @002f v26 = iconst.i64 4 +;; @002f v39 = iadd v28, v53 +;; @002f brif v41, block3, block2(v28) ;; -;; block2(v39: i64): -;; @002f store.i32 user2 little region0 v4, v39 -;; v58 = iconst.i64 4 -;; v59 = iadd v39, v58 ; v58 = 4 -;; @002f v42 = icmp eq v59, v36 -;; @002f brif v42, block3, block2(v59) +;; block2(v42: i64): +;; @002f store.i32 user2 little region0 v4, v42 +;; v55 = iconst.i64 4 +;; v56 = iadd v42, v55 ; v55 = 4 +;; @002f v45 = icmp eq v56, v39 +;; @002f brif v45, block3, block2(v56) ;; ;; block3: ;; @0032 jump block1 @@ -83,8 +83,8 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32, v4: i32): ;; @003d trapz v2, user16 -;; @003d v49 = load.i64 notrap aligned readonly can_move v0+8 -;; @003d v7 = load.i64 notrap aligned readonly can_move v49+32 +;; @003d v46 = load.i64 notrap aligned readonly can_move v0+8 +;; @003d v7 = load.i64 notrap aligned readonly can_move v46+32 ;; @003d v6 = uextend.i64 v2 ;; @003d v8 = iadd v7, v6 ;; @003d v9 = iconst.i64 16 @@ -96,31 +96,31 @@ ;; @003d v12 = uextend.i64 v11 ;; @003d v18 = icmp ugt v17, v12 ;; @003d trapnz v18, user17 -;; @003d v32 = load.i64 notrap aligned v49+40 -;; @003d v22 = iconst.i64 20 -;; @003d v23 = iadd v8, v22 ; v22 = 20 -;; v53 = iconst.i64 2 -;; v54 = ishl v13, v53 ; v53 = 2 -;; @003d v27 = iadd v23, v54 -;; v56 = ishl v14, v53 ; v53 = 2 -;; @003d v34 = uadd_overflow_trap v27, v56, user2 -;; @003d v33 = iadd v7, v32 -;; @003d v35 = icmp ugt v34, v33 -;; @003d trapnz v35, user2 -;; v51 = iconst.i64 0 -;; @003d v38 = icmp eq v14, v51 ; v51 = 0 +;; @003d v35 = load.i64 notrap aligned v46+40 +;; @003d v23 = iconst.i64 20 +;; @003d v24 = iadd v8, v23 ; v23 = 20 +;; v50 = iconst.i64 2 +;; v51 = ishl v13, v50 ; v50 = 2 +;; @003d v28 = iadd v24, v51 +;; v53 = ishl v14, v50 ; v50 = 2 +;; @003d v37 = uadd_overflow_trap v28, v53, user2 +;; @003d v36 = iadd v7, v35 +;; @003d v38 = icmp ugt v37, v36 +;; @003d trapnz v38, user2 +;; v48 = iconst.i64 0 +;; @003d v41 = icmp eq v14, v48 ; v48 = 0 ;; @0039 v5 = iconst.i32 0 -;; @003d v25 = iconst.i64 4 -;; @003d v36 = iadd v27, v56 -;; @003d brif v38, block3, block2(v27) +;; @003d v26 = iconst.i64 4 +;; @003d v39 = iadd v28, v53 +;; @003d brif v41, block3, block2(v28) ;; -;; block2(v39: i64): -;; v58 = iconst.i32 0 -;; @003d store user2 little region0 v58, v39 ; v58 = 0 -;; v59 = iconst.i64 4 -;; v60 = iadd v39, v59 ; v59 = 4 -;; @003d v42 = icmp eq v60, v36 -;; @003d brif v42, block3, block2(v60) +;; block2(v42: i64): +;; v55 = iconst.i32 0 +;; @003d store user2 little region0 v55, v42 ; v55 = 0 +;; v56 = iconst.i64 4 +;; v57 = iadd v42, v56 ; v56 = 4 +;; @003d v45 = icmp eq v57, v39 +;; @003d brif v45, block3, block2(v57) ;; ;; block3: ;; @0040 jump block1 diff --git a/tests/disas/array-fill-f32.wat b/tests/disas/array-fill-f32.wat index 5e32d202c9d3..01dd5775604a 100644 --- a/tests/disas/array-fill-f32.wat +++ b/tests/disas/array-fill-f32.wat @@ -30,8 +30,8 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32, v4: f32, v5: i32): ;; @0030 trapz v2, user16 -;; @0030 v49 = load.i64 notrap aligned readonly can_move v0+8 -;; @0030 v7 = load.i64 notrap aligned readonly can_move v49+32 +;; @0030 v46 = load.i64 notrap aligned readonly can_move v0+8 +;; @0030 v7 = load.i64 notrap aligned readonly can_move v46+32 ;; @0030 v6 = uextend.i64 v2 ;; @0030 v8 = iadd v7, v6 ;; @0030 v9 = iconst.i64 16 @@ -43,29 +43,29 @@ ;; @0030 v12 = uextend.i64 v11 ;; @0030 v18 = icmp ugt v17, v12 ;; @0030 trapnz v18, user17 -;; @0030 v32 = load.i64 notrap aligned v49+40 -;; @0030 v22 = iconst.i64 20 -;; @0030 v23 = iadd v8, v22 ; v22 = 20 -;; v53 = iconst.i64 2 -;; v54 = ishl v13, v53 ; v53 = 2 -;; @0030 v27 = iadd v23, v54 -;; v56 = ishl v14, v53 ; v53 = 2 -;; @0030 v34 = uadd_overflow_trap v27, v56, user2 -;; @0030 v33 = iadd v7, v32 -;; @0030 v35 = icmp ugt v34, v33 -;; @0030 trapnz v35, user2 -;; v51 = iconst.i64 0 -;; @0030 v38 = icmp eq v14, v51 ; v51 = 0 -;; @0030 v25 = iconst.i64 4 -;; @0030 v36 = iadd v27, v56 -;; @0030 brif v38, block3, block2(v27) +;; @0030 v35 = load.i64 notrap aligned v46+40 +;; @0030 v23 = iconst.i64 20 +;; @0030 v24 = iadd v8, v23 ; v23 = 20 +;; v50 = iconst.i64 2 +;; v51 = ishl v13, v50 ; v50 = 2 +;; @0030 v28 = iadd v24, v51 +;; v53 = ishl v14, v50 ; v50 = 2 +;; @0030 v37 = uadd_overflow_trap v28, v53, user2 +;; @0030 v36 = iadd v7, v35 +;; @0030 v38 = icmp ugt v37, v36 +;; @0030 trapnz v38, user2 +;; v48 = iconst.i64 0 +;; @0030 v41 = icmp eq v14, v48 ; v48 = 0 +;; @0030 v26 = iconst.i64 4 +;; @0030 v39 = iadd v28, v53 +;; @0030 brif v41, block3, block2(v28) ;; -;; block2(v39: i64): -;; @0030 store.f32 user2 little region0 v4, v39 -;; v58 = iconst.i64 4 -;; v59 = iadd v39, v58 ; v58 = 4 -;; @0030 v42 = icmp eq v59, v36 -;; @0030 brif v42, block3, block2(v59) +;; block2(v42: i64): +;; @0030 store.f32 user2 little region0 v4, v42 +;; v55 = iconst.i64 4 +;; v56 = iadd v42, v55 ; v55 = 4 +;; @0030 v45 = icmp eq v56, v39 +;; @0030 brif v45, block3, block2(v56) ;; ;; block3: ;; @0033 jump block1 @@ -89,8 +89,8 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32, v4: i32): ;; @0041 trapz v2, user16 -;; @0041 v43 = load.i64 notrap aligned readonly can_move v0+8 -;; @0041 v7 = load.i64 notrap aligned readonly can_move v43+32 +;; @0041 v40 = load.i64 notrap aligned readonly can_move v0+8 +;; @0041 v7 = load.i64 notrap aligned readonly can_move v40+32 ;; @0041 v6 = uextend.i64 v2 ;; @0041 v8 = iadd v7, v6 ;; @0041 v9 = iconst.i64 16 @@ -102,19 +102,19 @@ ;; @0041 v12 = uextend.i64 v11 ;; @0041 v18 = icmp ugt v17, v12 ;; @0041 trapnz v18, user17 -;; @0041 v32 = load.i64 notrap aligned v43+40 -;; @0041 v22 = iconst.i64 20 -;; @0041 v23 = iadd v8, v22 ; v22 = 20 -;; v47 = iconst.i64 2 -;; v48 = ishl v13, v47 ; v47 = 2 -;; @0041 v27 = iadd v23, v48 -;; v50 = ishl v14, v47 ; v47 = 2 -;; @0041 v34 = uadd_overflow_trap v27, v50, user2 -;; @0041 v33 = iadd v7, v32 -;; @0041 v35 = icmp ugt v34, v33 -;; @0041 trapnz v35, user2 -;; @0041 v36 = iconst.i32 0 -;; @0041 call fn0(v0, v27, v36, v50) ; v36 = 0 +;; @0041 v35 = load.i64 notrap aligned v40+40 +;; @0041 v23 = iconst.i64 20 +;; @0041 v24 = iadd v8, v23 ; v23 = 20 +;; v44 = iconst.i64 2 +;; v45 = ishl v13, v44 ; v44 = 2 +;; @0041 v28 = iadd v24, v45 +;; v47 = ishl v14, v44 ; v44 = 2 +;; @0041 v37 = uadd_overflow_trap v28, v47, user2 +;; @0041 v36 = iadd v7, v35 +;; @0041 v38 = icmp ugt v37, v36 +;; @0041 trapnz v38, user2 +;; @0041 v39 = iconst.i32 0 +;; @0041 call fn0(v0, v28, v39, v47) ; v39 = 0 ;; @0044 jump block1 ;; ;; block1: @@ -134,8 +134,8 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32, v4: i32): ;; @0052 trapz v2, user16 -;; @0052 v49 = load.i64 notrap aligned readonly can_move v0+8 -;; @0052 v7 = load.i64 notrap aligned readonly can_move v49+32 +;; @0052 v46 = load.i64 notrap aligned readonly can_move v0+8 +;; @0052 v7 = load.i64 notrap aligned readonly can_move v46+32 ;; @0052 v6 = uextend.i64 v2 ;; @0052 v8 = iadd v7, v6 ;; @0052 v9 = iconst.i64 16 @@ -147,31 +147,31 @@ ;; @0052 v12 = uextend.i64 v11 ;; @0052 v18 = icmp ugt v17, v12 ;; @0052 trapnz v18, user17 -;; @0052 v32 = load.i64 notrap aligned v49+40 -;; @0052 v22 = iconst.i64 20 -;; @0052 v23 = iadd v8, v22 ; v22 = 20 -;; v53 = iconst.i64 2 -;; v54 = ishl v13, v53 ; v53 = 2 -;; @0052 v27 = iadd v23, v54 -;; v56 = ishl v14, v53 ; v53 = 2 -;; @0052 v34 = uadd_overflow_trap v27, v56, user2 -;; @0052 v33 = iadd v7, v32 -;; @0052 v35 = icmp ugt v34, v33 -;; @0052 trapnz v35, user2 -;; v51 = iconst.i64 0 -;; @0052 v38 = icmp eq v14, v51 ; v51 = 0 +;; @0052 v35 = load.i64 notrap aligned v46+40 +;; @0052 v23 = iconst.i64 20 +;; @0052 v24 = iadd v8, v23 ; v23 = 20 +;; v50 = iconst.i64 2 +;; v51 = ishl v13, v50 ; v50 = 2 +;; @0052 v28 = iadd v24, v51 +;; v53 = ishl v14, v50 ; v50 = 2 +;; @0052 v37 = uadd_overflow_trap v28, v53, user2 +;; @0052 v36 = iadd v7, v35 +;; @0052 v38 = icmp ugt v37, v36 +;; @0052 trapnz v38, user2 +;; v48 = iconst.i64 0 +;; @0052 v41 = icmp eq v14, v48 ; v48 = 0 ;; @004b v5 = f32const 0x1.000000p0 -;; @0052 v25 = iconst.i64 4 -;; @0052 v36 = iadd v27, v56 -;; @0052 brif v38, block3, block2(v27) +;; @0052 v26 = iconst.i64 4 +;; @0052 v39 = iadd v28, v53 +;; @0052 brif v41, block3, block2(v28) ;; -;; block2(v39: i64): -;; v58 = f32const 0x1.000000p0 -;; @0052 store user2 little region0 v58, v39 ; v58 = 0x1.000000p0 -;; v59 = iconst.i64 4 -;; v60 = iadd v39, v59 ; v59 = 4 -;; @0052 v42 = icmp eq v60, v36 -;; @0052 brif v42, block3, block2(v60) +;; block2(v42: i64): +;; v55 = f32const 0x1.000000p0 +;; @0052 store user2 little region0 v55, v42 ; v55 = 0x1.000000p0 +;; v56 = iconst.i64 4 +;; v57 = iadd v42, v56 ; v56 = 4 +;; @0052 v45 = icmp eq v57, v39 +;; @0052 brif v45, block3, block2(v57) ;; ;; block3: ;; @0055 jump block1 diff --git a/tests/disas/array-fill-f64.wat b/tests/disas/array-fill-f64.wat index c2bc18ed214f..611f1faf6ac7 100644 --- a/tests/disas/array-fill-f64.wat +++ b/tests/disas/array-fill-f64.wat @@ -30,8 +30,8 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32, v4: f64, v5: i32): ;; @0030 trapz v2, user16 -;; @0030 v49 = load.i64 notrap aligned readonly can_move v0+8 -;; @0030 v7 = load.i64 notrap aligned readonly can_move v49+32 +;; @0030 v46 = load.i64 notrap aligned readonly can_move v0+8 +;; @0030 v7 = load.i64 notrap aligned readonly can_move v46+32 ;; @0030 v6 = uextend.i64 v2 ;; @0030 v8 = iadd v7, v6 ;; @0030 v9 = iconst.i64 16 @@ -43,29 +43,29 @@ ;; @0030 v12 = uextend.i64 v11 ;; @0030 v18 = icmp ugt v17, v12 ;; @0030 trapnz v18, user17 -;; @0030 v32 = load.i64 notrap aligned v49+40 -;; @0030 v22 = iconst.i64 24 -;; @0030 v23 = iadd v8, v22 ; v22 = 24 -;; v53 = iconst.i64 3 -;; v54 = ishl v13, v53 ; v53 = 3 -;; @0030 v27 = iadd v23, v54 -;; v56 = ishl v14, v53 ; v53 = 3 -;; @0030 v34 = uadd_overflow_trap v27, v56, user2 -;; @0030 v33 = iadd v7, v32 -;; @0030 v35 = icmp ugt v34, v33 -;; @0030 trapnz v35, user2 -;; v51 = iconst.i64 0 -;; @0030 v38 = icmp eq v14, v51 ; v51 = 0 -;; @0030 v25 = iconst.i64 8 -;; @0030 v36 = iadd v27, v56 -;; @0030 brif v38, block3, block2(v27) +;; @0030 v35 = load.i64 notrap aligned v46+40 +;; @0030 v23 = iconst.i64 24 +;; @0030 v24 = iadd v8, v23 ; v23 = 24 +;; v50 = iconst.i64 3 +;; v51 = ishl v13, v50 ; v50 = 3 +;; @0030 v28 = iadd v24, v51 +;; v53 = ishl v14, v50 ; v50 = 3 +;; @0030 v37 = uadd_overflow_trap v28, v53, user2 +;; @0030 v36 = iadd v7, v35 +;; @0030 v38 = icmp ugt v37, v36 +;; @0030 trapnz v38, user2 +;; v48 = iconst.i64 0 +;; @0030 v41 = icmp eq v14, v48 ; v48 = 0 +;; @0030 v26 = iconst.i64 8 +;; @0030 v39 = iadd v28, v53 +;; @0030 brif v41, block3, block2(v28) ;; -;; block2(v39: i64): -;; @0030 store.f64 user2 little region0 v4, v39 -;; v58 = iconst.i64 8 -;; v59 = iadd v39, v58 ; v58 = 8 -;; @0030 v42 = icmp eq v59, v36 -;; @0030 brif v42, block3, block2(v59) +;; block2(v42: i64): +;; @0030 store.f64 user2 little region0 v4, v42 +;; v55 = iconst.i64 8 +;; v56 = iadd v42, v55 ; v55 = 8 +;; @0030 v45 = icmp eq v56, v39 +;; @0030 brif v45, block3, block2(v56) ;; ;; block3: ;; @0033 jump block1 @@ -89,8 +89,8 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32, v4: i32): ;; @0045 trapz v2, user16 -;; @0045 v43 = load.i64 notrap aligned readonly can_move v0+8 -;; @0045 v7 = load.i64 notrap aligned readonly can_move v43+32 +;; @0045 v40 = load.i64 notrap aligned readonly can_move v0+8 +;; @0045 v7 = load.i64 notrap aligned readonly can_move v40+32 ;; @0045 v6 = uextend.i64 v2 ;; @0045 v8 = iadd v7, v6 ;; @0045 v9 = iconst.i64 16 @@ -102,19 +102,19 @@ ;; @0045 v12 = uextend.i64 v11 ;; @0045 v18 = icmp ugt v17, v12 ;; @0045 trapnz v18, user17 -;; @0045 v32 = load.i64 notrap aligned v43+40 -;; @0045 v22 = iconst.i64 24 -;; @0045 v23 = iadd v8, v22 ; v22 = 24 -;; v47 = iconst.i64 3 -;; v48 = ishl v13, v47 ; v47 = 3 -;; @0045 v27 = iadd v23, v48 -;; v50 = ishl v14, v47 ; v47 = 3 -;; @0045 v34 = uadd_overflow_trap v27, v50, user2 -;; @0045 v33 = iadd v7, v32 -;; @0045 v35 = icmp ugt v34, v33 -;; @0045 trapnz v35, user2 -;; @0045 v36 = iconst.i32 0 -;; @0045 call fn0(v0, v27, v36, v50) ; v36 = 0 +;; @0045 v35 = load.i64 notrap aligned v40+40 +;; @0045 v23 = iconst.i64 24 +;; @0045 v24 = iadd v8, v23 ; v23 = 24 +;; v44 = iconst.i64 3 +;; v45 = ishl v13, v44 ; v44 = 3 +;; @0045 v28 = iadd v24, v45 +;; v47 = ishl v14, v44 ; v44 = 3 +;; @0045 v37 = uadd_overflow_trap v28, v47, user2 +;; @0045 v36 = iadd v7, v35 +;; @0045 v38 = icmp ugt v37, v36 +;; @0045 trapnz v38, user2 +;; @0045 v39 = iconst.i32 0 +;; @0045 call fn0(v0, v28, v39, v47) ; v39 = 0 ;; @0048 jump block1 ;; ;; block1: @@ -134,8 +134,8 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32, v4: i32): ;; @005a trapz v2, user16 -;; @005a v49 = load.i64 notrap aligned readonly can_move v0+8 -;; @005a v7 = load.i64 notrap aligned readonly can_move v49+32 +;; @005a v46 = load.i64 notrap aligned readonly can_move v0+8 +;; @005a v7 = load.i64 notrap aligned readonly can_move v46+32 ;; @005a v6 = uextend.i64 v2 ;; @005a v8 = iadd v7, v6 ;; @005a v9 = iconst.i64 16 @@ -147,31 +147,31 @@ ;; @005a v12 = uextend.i64 v11 ;; @005a v18 = icmp ugt v17, v12 ;; @005a trapnz v18, user17 -;; @005a v32 = load.i64 notrap aligned v49+40 -;; @005a v22 = iconst.i64 24 -;; @005a v23 = iadd v8, v22 ; v22 = 24 -;; v53 = iconst.i64 3 -;; v54 = ishl v13, v53 ; v53 = 3 -;; @005a v27 = iadd v23, v54 -;; v56 = ishl v14, v53 ; v53 = 3 -;; @005a v34 = uadd_overflow_trap v27, v56, user2 -;; @005a v33 = iadd v7, v32 -;; @005a v35 = icmp ugt v34, v33 -;; @005a trapnz v35, user2 -;; v51 = iconst.i64 0 -;; @005a v38 = icmp eq v14, v51 ; v51 = 0 +;; @005a v35 = load.i64 notrap aligned v46+40 +;; @005a v23 = iconst.i64 24 +;; @005a v24 = iadd v8, v23 ; v23 = 24 +;; v50 = iconst.i64 3 +;; v51 = ishl v13, v50 ; v50 = 3 +;; @005a v28 = iadd v24, v51 +;; v53 = ishl v14, v50 ; v50 = 3 +;; @005a v37 = uadd_overflow_trap v28, v53, user2 +;; @005a v36 = iadd v7, v35 +;; @005a v38 = icmp ugt v37, v36 +;; @005a trapnz v38, user2 +;; v48 = iconst.i64 0 +;; @005a v41 = icmp eq v14, v48 ; v48 = 0 ;; @004f v5 = f64const 0x1.0000000000000p0 -;; @005a v25 = iconst.i64 8 -;; @005a v36 = iadd v27, v56 -;; @005a brif v38, block3, block2(v27) +;; @005a v26 = iconst.i64 8 +;; @005a v39 = iadd v28, v53 +;; @005a brif v41, block3, block2(v28) ;; -;; block2(v39: i64): -;; v58 = f64const 0x1.0000000000000p0 -;; @005a store user2 little region0 v58, v39 ; v58 = 0x1.0000000000000p0 -;; v59 = iconst.i64 8 -;; v60 = iadd v39, v59 ; v59 = 8 -;; @005a v42 = icmp eq v60, v36 -;; @005a brif v42, block3, block2(v60) +;; block2(v42: i64): +;; v55 = f64const 0x1.0000000000000p0 +;; @005a store user2 little region0 v55, v42 ; v55 = 0x1.0000000000000p0 +;; v56 = iconst.i64 8 +;; v57 = iadd v42, v56 ; v56 = 8 +;; @005a v45 = icmp eq v57, v39 +;; @005a brif v45, block3, block2(v57) ;; ;; block3: ;; @005d jump block1 diff --git a/tests/disas/array-fill-funcref.wat b/tests/disas/array-fill-funcref.wat index 5c3308c24799..6bccd330696e 100644 --- a/tests/disas/array-fill-funcref.wat +++ b/tests/disas/array-fill-funcref.wat @@ -35,8 +35,8 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32, v4: i64, v5: i32): ;; @003b trapz v2, user16 -;; @003b v51 = load.i64 notrap aligned readonly can_move v0+8 -;; @003b v7 = load.i64 notrap aligned readonly can_move v51+32 +;; @003b v48 = load.i64 notrap aligned readonly can_move v0+8 +;; @003b v7 = load.i64 notrap aligned readonly can_move v48+32 ;; @003b v6 = uextend.i64 v2 ;; @003b v8 = iadd v7, v6 ;; @003b v9 = iconst.i64 16 @@ -48,31 +48,31 @@ ;; @003b v12 = uextend.i64 v11 ;; @003b v18 = icmp ugt v17, v12 ;; @003b trapnz v18, user17 -;; @003b v32 = load.i64 notrap aligned v51+40 -;; @003b v22 = iconst.i64 20 -;; @003b v23 = iadd v8, v22 ; v22 = 20 -;; v55 = iconst.i64 2 -;; v56 = ishl v13, v55 ; v55 = 2 -;; @003b v27 = iadd v23, v56 -;; v58 = ishl v14, v55 ; v55 = 2 -;; @003b v34 = uadd_overflow_trap v27, v58, user2 -;; @003b v33 = iadd v7, v32 -;; @003b v35 = icmp ugt v34, v33 -;; @003b trapnz v35, user2 -;; @003b v36 = call fn0(v0, v4) -;; v53 = iconst.i64 0 -;; @003b v40 = icmp eq v14, v53 ; v53 = 0 -;; @003b v37 = ireduce.i32 v36 -;; @003b v25 = iconst.i64 4 -;; @003b v38 = iadd v27, v58 -;; @003b brif v40, block3, block2(v27) -;; -;; block2(v41: i64): -;; @003b store.i32 notrap aligned little v37, v41 -;; v60 = iconst.i64 4 -;; v61 = iadd v41, v60 ; v60 = 4 -;; @003b v44 = icmp eq v61, v38 -;; @003b brif v44, block3, block2(v61) +;; @003b v35 = load.i64 notrap aligned v48+40 +;; @003b v23 = iconst.i64 20 +;; @003b v24 = iadd v8, v23 ; v23 = 20 +;; v52 = iconst.i64 2 +;; v53 = ishl v13, v52 ; v52 = 2 +;; @003b v28 = iadd v24, v53 +;; v55 = ishl v14, v52 ; v52 = 2 +;; @003b v37 = uadd_overflow_trap v28, v55, user2 +;; @003b v36 = iadd v7, v35 +;; @003b v38 = icmp ugt v37, v36 +;; @003b trapnz v38, user2 +;; @003b v39 = call fn0(v0, v4) +;; v50 = iconst.i64 0 +;; @003b v43 = icmp eq v14, v50 ; v50 = 0 +;; @003b v40 = ireduce.i32 v39 +;; @003b v26 = iconst.i64 4 +;; @003b v41 = iadd v28, v55 +;; @003b brif v43, block3, block2(v28) +;; +;; block2(v44: i64): +;; @003b store.i32 notrap aligned little v40, v44 +;; v57 = iconst.i64 4 +;; v58 = iadd v44, v57 ; v57 = 4 +;; @003b v47 = icmp eq v58, v41 +;; @003b brif v47, block3, block2(v58) ;; ;; block3: ;; @003e jump block1 @@ -96,8 +96,8 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32, v4: i32): ;; @0049 trapz v2, user16 -;; @0049 v51 = load.i64 notrap aligned readonly can_move v0+8 -;; @0049 v7 = load.i64 notrap aligned readonly can_move v51+32 +;; @0049 v48 = load.i64 notrap aligned readonly can_move v0+8 +;; @0049 v7 = load.i64 notrap aligned readonly can_move v48+32 ;; @0049 v6 = uextend.i64 v2 ;; @0049 v8 = iadd v7, v6 ;; @0049 v9 = iconst.i64 16 @@ -109,31 +109,31 @@ ;; @0049 v12 = uextend.i64 v11 ;; @0049 v18 = icmp ugt v17, v12 ;; @0049 trapnz v18, user17 -;; @0049 v32 = load.i64 notrap aligned v51+40 -;; @0049 v22 = iconst.i64 20 -;; @0049 v23 = iadd v8, v22 ; v22 = 20 -;; v54 = iconst.i64 2 -;; v55 = ishl v13, v54 ; v54 = 2 -;; @0049 v27 = iadd v23, v55 -;; v57 = ishl v14, v54 ; v54 = 2 -;; @0049 v34 = uadd_overflow_trap v27, v57, user2 -;; @0049 v33 = iadd v7, v32 -;; @0049 v35 = icmp ugt v34, v33 -;; @0049 trapnz v35, user2 +;; @0049 v35 = load.i64 notrap aligned v48+40 +;; @0049 v23 = iconst.i64 20 +;; @0049 v24 = iadd v8, v23 ; v23 = 20 +;; v51 = iconst.i64 2 +;; v52 = ishl v13, v51 ; v51 = 2 +;; @0049 v28 = iadd v24, v52 +;; v54 = ishl v14, v51 ; v51 = 2 +;; @0049 v37 = uadd_overflow_trap v28, v54, user2 +;; @0049 v36 = iadd v7, v35 +;; @0049 v38 = icmp ugt v37, v36 +;; @0049 trapnz v38, user2 ;; @0045 v5 = iconst.i64 0 -;; @0049 v36 = call fn0(v0, v5) ; v5 = 0 -;; @0049 v40 = icmp eq v14, v5 ; v5 = 0 -;; @0049 v37 = ireduce.i32 v36 -;; @0049 v25 = iconst.i64 4 -;; @0049 v38 = iadd v27, v57 -;; @0049 brif v40, block3, block2(v27) -;; -;; block2(v41: i64): -;; @0049 store.i32 notrap aligned little v37, v41 -;; v59 = iconst.i64 4 -;; v60 = iadd v41, v59 ; v59 = 4 -;; @0049 v44 = icmp eq v60, v38 -;; @0049 brif v44, block3, block2(v60) +;; @0049 v39 = call fn0(v0, v5) ; v5 = 0 +;; @0049 v43 = icmp eq v14, v5 ; v5 = 0 +;; @0049 v40 = ireduce.i32 v39 +;; @0049 v26 = iconst.i64 4 +;; @0049 v41 = iadd v28, v54 +;; @0049 brif v43, block3, block2(v28) +;; +;; block2(v44: i64): +;; @0049 store.i32 notrap aligned little v40, v44 +;; v56 = iconst.i64 4 +;; v57 = iadd v44, v56 ; v56 = 4 +;; @0049 v47 = icmp eq v57, v41 +;; @0049 brif v47, block3, block2(v57) ;; ;; block3: ;; @004c jump block1 @@ -159,15 +159,15 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32, v4: i32): -;; v52 = stack_addr.i64 ss0 -;; store notrap v2, v52 +;; v55 = stack_addr.i64 ss0 +;; store notrap v2, v55 ;; @0053 v5 = iconst.i32 3 ;; @0053 v6 = call fn0(v0, v5), stack_map=[i32 @ ss0+0] ; v5 = 3 -;; v51 = load.i32 notrap v52 -;; @0057 trapz v51, user16 -;; @0057 v59 = load.i64 notrap aligned readonly can_move v0+8 -;; @0057 v8 = load.i64 notrap aligned readonly can_move v59+32 -;; @0057 v7 = uextend.i64 v51 +;; v54 = load.i32 notrap v55 +;; @0057 trapz v54, user16 +;; @0057 v56 = load.i64 notrap aligned readonly can_move v0+8 +;; @0057 v8 = load.i64 notrap aligned readonly can_move v56+32 +;; @0057 v7 = uextend.i64 v54 ;; @0057 v9 = iadd v8, v7 ;; @0057 v10 = iconst.i64 16 ;; @0057 v11 = iadd v9, v10 ; v10 = 16 @@ -178,31 +178,31 @@ ;; @0057 v13 = uextend.i64 v12 ;; @0057 v19 = icmp ugt v18, v13 ;; @0057 trapnz v19, user17 -;; @0057 v33 = load.i64 notrap aligned v59+40 -;; @0057 v23 = iconst.i64 20 -;; @0057 v24 = iadd v9, v23 ; v23 = 20 -;; v63 = iconst.i64 2 -;; v64 = ishl v14, v63 ; v63 = 2 -;; @0057 v28 = iadd v24, v64 -;; v66 = ishl v15, v63 ; v63 = 2 -;; @0057 v35 = uadd_overflow_trap v28, v66, user2 -;; @0057 v34 = iadd v8, v33 -;; @0057 v36 = icmp ugt v35, v34 -;; @0057 trapnz v36, user2 -;; @0057 v37 = call fn1(v0, v6) -;; v61 = iconst.i64 0 -;; @0057 v41 = icmp eq v15, v61 ; v61 = 0 -;; @0057 v38 = ireduce.i32 v37 -;; @0057 v26 = iconst.i64 4 -;; @0057 v39 = iadd v28, v66 -;; @0057 brif v41, block3, block2(v28) -;; -;; block2(v42: i64): -;; @0057 store.i32 notrap aligned little v38, v42 -;; v68 = iconst.i64 4 -;; v69 = iadd v42, v68 ; v68 = 4 -;; @0057 v45 = icmp eq v69, v39 -;; @0057 brif v45, block3, block2(v69) +;; @0057 v36 = load.i64 notrap aligned v56+40 +;; @0057 v24 = iconst.i64 20 +;; @0057 v25 = iadd v9, v24 ; v24 = 20 +;; v60 = iconst.i64 2 +;; v61 = ishl v14, v60 ; v60 = 2 +;; @0057 v29 = iadd v25, v61 +;; v63 = ishl v15, v60 ; v60 = 2 +;; @0057 v38 = uadd_overflow_trap v29, v63, user2 +;; @0057 v37 = iadd v8, v36 +;; @0057 v39 = icmp ugt v38, v37 +;; @0057 trapnz v39, user2 +;; @0057 v40 = call fn1(v0, v6) +;; v58 = iconst.i64 0 +;; @0057 v44 = icmp eq v15, v58 ; v58 = 0 +;; @0057 v41 = ireduce.i32 v40 +;; @0057 v27 = iconst.i64 4 +;; @0057 v42 = iadd v29, v63 +;; @0057 brif v44, block3, block2(v29) +;; +;; block2(v45: i64): +;; @0057 store.i32 notrap aligned little v41, v45 +;; v65 = iconst.i64 4 +;; v66 = iadd v45, v65 ; v65 = 4 +;; @0057 v48 = icmp eq v66, v42 +;; @0057 brif v48, block3, block2(v66) ;; ;; block3: ;; @005a jump block1 diff --git a/tests/disas/array-fill-i16.wat b/tests/disas/array-fill-i16.wat index 64b18874885d..47b49a5e1b69 100644 --- a/tests/disas/array-fill-i16.wat +++ b/tests/disas/array-fill-i16.wat @@ -34,8 +34,8 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32, v4: i32, v5: i32): ;; @0031 trapz v2, user16 -;; @0031 v49 = load.i64 notrap aligned readonly can_move v0+8 -;; @0031 v7 = load.i64 notrap aligned readonly can_move v49+32 +;; @0031 v46 = load.i64 notrap aligned readonly can_move v0+8 +;; @0031 v7 = load.i64 notrap aligned readonly can_move v46+32 ;; @0031 v6 = uextend.i64 v2 ;; @0031 v8 = iadd v7, v6 ;; @0031 v9 = iconst.i64 16 @@ -47,29 +47,29 @@ ;; @0031 v12 = uextend.i64 v11 ;; @0031 v18 = icmp ugt v17, v12 ;; @0031 trapnz v18, user17 -;; @0031 v32 = load.i64 notrap aligned v49+40 -;; @0031 v22 = iconst.i64 20 -;; @0031 v23 = iadd v8, v22 ; v22 = 20 +;; @0031 v35 = load.i64 notrap aligned v46+40 +;; @0031 v23 = iconst.i64 20 +;; @0031 v24 = iadd v8, v23 ; v23 = 20 ;; @0031 v15 = iconst.i64 1 -;; v54 = ishl v13, v15 ; v15 = 1 -;; @0031 v27 = iadd v23, v54 -;; v58 = ishl v14, v15 ; v15 = 1 -;; @0031 v34 = uadd_overflow_trap v27, v58, user2 -;; @0031 v33 = iadd v7, v32 -;; @0031 v35 = icmp ugt v34, v33 -;; @0031 trapnz v35, user2 -;; v51 = iconst.i64 0 -;; @0031 v38 = icmp eq v14, v51 ; v51 = 0 -;; @0031 v25 = iconst.i64 2 -;; @0031 v36 = iadd v27, v58 -;; @0031 brif v38, block3, block2(v27) +;; v51 = ishl v13, v15 ; v15 = 1 +;; @0031 v28 = iadd v24, v51 +;; v55 = ishl v14, v15 ; v15 = 1 +;; @0031 v37 = uadd_overflow_trap v28, v55, user2 +;; @0031 v36 = iadd v7, v35 +;; @0031 v38 = icmp ugt v37, v36 +;; @0031 trapnz v38, user2 +;; v48 = iconst.i64 0 +;; @0031 v41 = icmp eq v14, v48 ; v48 = 0 +;; @0031 v26 = iconst.i64 2 +;; @0031 v39 = iadd v28, v55 +;; @0031 brif v41, block3, block2(v28) ;; -;; block2(v39: i64): -;; @0031 istore16.i32 user2 little region0 v4, v39 -;; v61 = iconst.i64 2 -;; v62 = iadd v39, v61 ; v61 = 2 -;; @0031 v42 = icmp eq v62, v36 -;; @0031 brif v42, block3, block2(v62) +;; block2(v42: i64): +;; @0031 istore16.i32 user2 little region0 v4, v42 +;; v58 = iconst.i64 2 +;; v59 = iadd v42, v58 ; v58 = 2 +;; @0031 v45 = icmp eq v59, v39 +;; @0031 brif v45, block3, block2(v59) ;; ;; block3: ;; @0034 jump block1 @@ -93,8 +93,8 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32, v4: i32): ;; @003f trapz v2, user16 -;; @003f v43 = load.i64 notrap aligned readonly can_move v0+8 -;; @003f v7 = load.i64 notrap aligned readonly can_move v43+32 +;; @003f v40 = load.i64 notrap aligned readonly can_move v0+8 +;; @003f v7 = load.i64 notrap aligned readonly can_move v40+32 ;; @003f v6 = uextend.i64 v2 ;; @003f v8 = iadd v7, v6 ;; @003f v9 = iconst.i64 16 @@ -106,19 +106,19 @@ ;; @003f v12 = uextend.i64 v11 ;; @003f v18 = icmp ugt v17, v12 ;; @003f trapnz v18, user17 -;; @003f v32 = load.i64 notrap aligned v43+40 -;; @003f v22 = iconst.i64 20 -;; @003f v23 = iadd v8, v22 ; v22 = 20 +;; @003f v35 = load.i64 notrap aligned v40+40 +;; @003f v23 = iconst.i64 20 +;; @003f v24 = iadd v8, v23 ; v23 = 20 ;; @003f v15 = iconst.i64 1 -;; v48 = ishl v13, v15 ; v15 = 1 -;; @003f v27 = iadd v23, v48 -;; v52 = ishl v14, v15 ; v15 = 1 -;; @003f v34 = uadd_overflow_trap v27, v52, user2 -;; @003f v33 = iadd v7, v32 -;; @003f v35 = icmp ugt v34, v33 -;; @003f trapnz v35, user2 +;; v45 = ishl v13, v15 ; v15 = 1 +;; @003f v28 = iadd v24, v45 +;; v49 = ishl v14, v15 ; v15 = 1 +;; @003f v37 = uadd_overflow_trap v28, v49, user2 +;; @003f v36 = iadd v7, v35 +;; @003f v38 = icmp ugt v37, v36 +;; @003f trapnz v38, user2 ;; @003b v5 = iconst.i32 0 -;; @003f call fn0(v0, v27, v5, v52) ; v5 = 0 +;; @003f call fn0(v0, v28, v5, v49) ; v5 = 0 ;; @0042 jump block1 ;; ;; block1: @@ -140,8 +140,8 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32, v4: i32): ;; @004d trapz v2, user16 -;; @004d v43 = load.i64 notrap aligned readonly can_move v0+8 -;; @004d v7 = load.i64 notrap aligned readonly can_move v43+32 +;; @004d v40 = load.i64 notrap aligned readonly can_move v0+8 +;; @004d v7 = load.i64 notrap aligned readonly can_move v40+32 ;; @004d v6 = uextend.i64 v2 ;; @004d v8 = iadd v7, v6 ;; @004d v9 = iconst.i64 16 @@ -153,19 +153,19 @@ ;; @004d v12 = uextend.i64 v11 ;; @004d v18 = icmp ugt v17, v12 ;; @004d trapnz v18, user17 -;; @004d v32 = load.i64 notrap aligned v43+40 -;; @004d v22 = iconst.i64 20 -;; @004d v23 = iadd v8, v22 ; v22 = 20 +;; @004d v35 = load.i64 notrap aligned v40+40 +;; @004d v23 = iconst.i64 20 +;; @004d v24 = iadd v8, v23 ; v23 = 20 ;; @004d v15 = iconst.i64 1 -;; v48 = ishl v13, v15 ; v15 = 1 -;; @004d v27 = iadd v23, v48 -;; v52 = ishl v14, v15 ; v15 = 1 -;; @004d v34 = uadd_overflow_trap v27, v52, user2 -;; @004d v33 = iadd v7, v32 -;; @004d v35 = icmp ugt v34, v33 -;; @004d trapnz v35, user2 -;; @004d v36 = iconst.i32 255 -;; @004d call fn0(v0, v27, v36, v52) ; v36 = 255 +;; v45 = ishl v13, v15 ; v15 = 1 +;; @004d v28 = iadd v24, v45 +;; v49 = ishl v14, v15 ; v15 = 1 +;; @004d v37 = uadd_overflow_trap v28, v49, user2 +;; @004d v36 = iadd v7, v35 +;; @004d v38 = icmp ugt v37, v36 +;; @004d trapnz v38, user2 +;; @004d v39 = iconst.i32 255 +;; @004d call fn0(v0, v28, v39, v49) ; v39 = 255 ;; @0050 jump block1 ;; ;; block1: @@ -185,8 +185,8 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32, v4: i32): ;; @005d trapz v2, user16 -;; @005d v49 = load.i64 notrap aligned readonly can_move v0+8 -;; @005d v7 = load.i64 notrap aligned readonly can_move v49+32 +;; @005d v46 = load.i64 notrap aligned readonly can_move v0+8 +;; @005d v7 = load.i64 notrap aligned readonly can_move v46+32 ;; @005d v6 = uextend.i64 v2 ;; @005d v8 = iadd v7, v6 ;; @005d v9 = iconst.i64 16 @@ -198,31 +198,31 @@ ;; @005d v12 = uextend.i64 v11 ;; @005d v18 = icmp ugt v17, v12 ;; @005d trapnz v18, user17 -;; @005d v32 = load.i64 notrap aligned v49+40 -;; @005d v22 = iconst.i64 20 -;; @005d v23 = iadd v8, v22 ; v22 = 20 +;; @005d v35 = load.i64 notrap aligned v46+40 +;; @005d v23 = iconst.i64 20 +;; @005d v24 = iadd v8, v23 ; v23 = 20 ;; @005d v15 = iconst.i64 1 -;; v54 = ishl v13, v15 ; v15 = 1 -;; @005d v27 = iadd v23, v54 -;; v58 = ishl v14, v15 ; v15 = 1 -;; @005d v34 = uadd_overflow_trap v27, v58, user2 -;; @005d v33 = iadd v7, v32 -;; @005d v35 = icmp ugt v34, v33 -;; @005d trapnz v35, user2 -;; v51 = iconst.i64 0 -;; @005d v38 = icmp eq v14, v51 ; v51 = 0 +;; v51 = ishl v13, v15 ; v15 = 1 +;; @005d v28 = iadd v24, v51 +;; v55 = ishl v14, v15 ; v15 = 1 +;; @005d v37 = uadd_overflow_trap v28, v55, user2 +;; @005d v36 = iadd v7, v35 +;; @005d v38 = icmp ugt v37, v36 +;; @005d trapnz v38, user2 +;; v48 = iconst.i64 0 +;; @005d v41 = icmp eq v14, v48 ; v48 = 0 ;; @0057 v5 = iconst.i32 0xdead -;; @005d v25 = iconst.i64 2 -;; @005d v36 = iadd v27, v58 -;; @005d brif v38, block3, block2(v27) +;; @005d v26 = iconst.i64 2 +;; @005d v39 = iadd v28, v55 +;; @005d brif v41, block3, block2(v28) ;; -;; block2(v39: i64): -;; v61 = iconst.i32 0xdead -;; @005d istore16 user2 little region0 v61, v39 ; v61 = 0xdead -;; v62 = iconst.i64 2 -;; v63 = iadd v39, v62 ; v62 = 2 -;; @005d v42 = icmp eq v63, v36 -;; @005d brif v42, block3, block2(v63) +;; block2(v42: i64): +;; v58 = iconst.i32 0xdead +;; @005d istore16 user2 little region0 v58, v42 ; v58 = 0xdead +;; v59 = iconst.i64 2 +;; v60 = iadd v42, v59 ; v59 = 2 +;; @005d v45 = icmp eq v60, v39 +;; @005d brif v45, block3, block2(v60) ;; ;; block3: ;; @0060 jump block1 diff --git a/tests/disas/array-fill-i31ref.wat b/tests/disas/array-fill-i31ref.wat index 0891b7cc9752..4b6dd72b6fde 100644 --- a/tests/disas/array-fill-i31ref.wat +++ b/tests/disas/array-fill-i31ref.wat @@ -30,8 +30,8 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32, v4: i32, v5: i32): ;; @0030 trapz v2, user16 -;; @0030 v49 = load.i64 notrap aligned readonly can_move v0+8 -;; @0030 v7 = load.i64 notrap aligned readonly can_move v49+32 +;; @0030 v46 = load.i64 notrap aligned readonly can_move v0+8 +;; @0030 v7 = load.i64 notrap aligned readonly can_move v46+32 ;; @0030 v6 = uextend.i64 v2 ;; @0030 v8 = iadd v7, v6 ;; @0030 v9 = iconst.i64 16 @@ -43,29 +43,29 @@ ;; @0030 v12 = uextend.i64 v11 ;; @0030 v18 = icmp ugt v17, v12 ;; @0030 trapnz v18, user17 -;; @0030 v32 = load.i64 notrap aligned v49+40 -;; @0030 v22 = iconst.i64 20 -;; @0030 v23 = iadd v8, v22 ; v22 = 20 -;; v53 = iconst.i64 2 -;; v54 = ishl v13, v53 ; v53 = 2 -;; @0030 v27 = iadd v23, v54 -;; v56 = ishl v14, v53 ; v53 = 2 -;; @0030 v34 = uadd_overflow_trap v27, v56, user2 -;; @0030 v33 = iadd v7, v32 -;; @0030 v35 = icmp ugt v34, v33 -;; @0030 trapnz v35, user2 -;; v51 = iconst.i64 0 -;; @0030 v38 = icmp eq v14, v51 ; v51 = 0 -;; @0030 v25 = iconst.i64 4 -;; @0030 v36 = iadd v27, v56 -;; @0030 brif v38, block3, block2(v27) +;; @0030 v35 = load.i64 notrap aligned v46+40 +;; @0030 v23 = iconst.i64 20 +;; @0030 v24 = iadd v8, v23 ; v23 = 20 +;; v50 = iconst.i64 2 +;; v51 = ishl v13, v50 ; v50 = 2 +;; @0030 v28 = iadd v24, v51 +;; v53 = ishl v14, v50 ; v50 = 2 +;; @0030 v37 = uadd_overflow_trap v28, v53, user2 +;; @0030 v36 = iadd v7, v35 +;; @0030 v38 = icmp ugt v37, v36 +;; @0030 trapnz v38, user2 +;; v48 = iconst.i64 0 +;; @0030 v41 = icmp eq v14, v48 ; v48 = 0 +;; @0030 v26 = iconst.i64 4 +;; @0030 v39 = iadd v28, v53 +;; @0030 brif v41, block3, block2(v28) ;; -;; block2(v39: i64): -;; @0030 store.i32 user2 little region0 v4, v39 -;; v58 = iconst.i64 4 -;; v59 = iadd v39, v58 ; v58 = 4 -;; @0030 v42 = icmp eq v59, v36 -;; @0030 brif v42, block3, block2(v59) +;; block2(v42: i64): +;; @0030 store.i32 user2 little region0 v4, v42 +;; v55 = iconst.i64 4 +;; v56 = iadd v42, v55 ; v55 = 4 +;; @0030 v45 = icmp eq v56, v39 +;; @0030 brif v45, block3, block2(v56) ;; ;; block3: ;; @0033 jump block1 @@ -87,8 +87,8 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32, v4: i32): ;; @003e trapz v2, user16 -;; @003e v49 = load.i64 notrap aligned readonly can_move v0+8 -;; @003e v7 = load.i64 notrap aligned readonly can_move v49+32 +;; @003e v46 = load.i64 notrap aligned readonly can_move v0+8 +;; @003e v7 = load.i64 notrap aligned readonly can_move v46+32 ;; @003e v6 = uextend.i64 v2 ;; @003e v8 = iadd v7, v6 ;; @003e v9 = iconst.i64 16 @@ -100,31 +100,31 @@ ;; @003e v12 = uextend.i64 v11 ;; @003e v18 = icmp ugt v17, v12 ;; @003e trapnz v18, user17 -;; @003e v32 = load.i64 notrap aligned v49+40 -;; @003e v22 = iconst.i64 20 -;; @003e v23 = iadd v8, v22 ; v22 = 20 -;; v53 = iconst.i64 2 -;; v54 = ishl v13, v53 ; v53 = 2 -;; @003e v27 = iadd v23, v54 -;; v56 = ishl v14, v53 ; v53 = 2 -;; @003e v34 = uadd_overflow_trap v27, v56, user2 -;; @003e v33 = iadd v7, v32 -;; @003e v35 = icmp ugt v34, v33 -;; @003e trapnz v35, user2 -;; v51 = iconst.i64 0 -;; @003e v38 = icmp eq v14, v51 ; v51 = 0 +;; @003e v35 = load.i64 notrap aligned v46+40 +;; @003e v23 = iconst.i64 20 +;; @003e v24 = iadd v8, v23 ; v23 = 20 +;; v50 = iconst.i64 2 +;; v51 = ishl v13, v50 ; v50 = 2 +;; @003e v28 = iadd v24, v51 +;; v53 = ishl v14, v50 ; v50 = 2 +;; @003e v37 = uadd_overflow_trap v28, v53, user2 +;; @003e v36 = iadd v7, v35 +;; @003e v38 = icmp ugt v37, v36 +;; @003e trapnz v38, user2 +;; v48 = iconst.i64 0 +;; @003e v41 = icmp eq v14, v48 ; v48 = 0 ;; @003a v5 = iconst.i32 0 -;; @003e v25 = iconst.i64 4 -;; @003e v36 = iadd v27, v56 -;; @003e brif v38, block3, block2(v27) +;; @003e v26 = iconst.i64 4 +;; @003e v39 = iadd v28, v53 +;; @003e brif v41, block3, block2(v28) ;; -;; block2(v39: i64): -;; v58 = iconst.i32 0 -;; @003e store user2 little region0 v58, v39 ; v58 = 0 -;; v59 = iconst.i64 4 -;; v60 = iadd v39, v59 ; v59 = 4 -;; @003e v42 = icmp eq v60, v36 -;; @003e brif v42, block3, block2(v60) +;; block2(v42: i64): +;; v55 = iconst.i32 0 +;; @003e store user2 little region0 v55, v42 ; v55 = 0 +;; v56 = iconst.i64 4 +;; v57 = iadd v42, v56 ; v56 = 4 +;; @003e v45 = icmp eq v57, v39 +;; @003e brif v45, block3, block2(v57) ;; ;; block3: ;; @0041 jump block1 @@ -146,8 +146,8 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32, v4: i32): ;; @004e trapz v2, user16 -;; @004e v53 = load.i64 notrap aligned readonly can_move v0+8 -;; @004e v11 = load.i64 notrap aligned readonly can_move v53+32 +;; @004e v50 = load.i64 notrap aligned readonly can_move v0+8 +;; @004e v11 = load.i64 notrap aligned readonly can_move v50+32 ;; @004e v10 = uextend.i64 v2 ;; @004e v12 = iadd v11, v10 ;; @004e v13 = iconst.i64 16 @@ -159,31 +159,31 @@ ;; @004e v16 = uextend.i64 v15 ;; @004e v22 = icmp ugt v21, v16 ;; @004e trapnz v22, user17 -;; @004e v36 = load.i64 notrap aligned v53+40 -;; @004e v26 = iconst.i64 20 -;; @004e v27 = iadd v12, v26 ; v26 = 20 -;; v63 = iconst.i64 2 -;; v64 = ishl v17, v63 ; v63 = 2 -;; @004e v31 = iadd v27, v64 -;; v66 = ishl v18, v63 ; v63 = 2 -;; @004e v38 = uadd_overflow_trap v31, v66, user2 -;; @004e v37 = iadd v11, v36 -;; @004e v39 = icmp ugt v38, v37 -;; @004e trapnz v39, user2 -;; v61 = iconst.i64 0 -;; @004e v42 = icmp eq v18, v61 ; v61 = 0 +;; @004e v39 = load.i64 notrap aligned v50+40 +;; @004e v27 = iconst.i64 20 +;; @004e v28 = iadd v12, v27 ; v27 = 20 +;; v60 = iconst.i64 2 +;; v61 = ishl v17, v60 ; v60 = 2 +;; @004e v32 = iadd v28, v61 +;; v63 = ishl v18, v60 ; v60 = 2 +;; @004e v41 = uadd_overflow_trap v32, v63, user2 +;; @004e v40 = iadd v11, v39 +;; @004e v42 = icmp ugt v41, v40 +;; @004e trapnz v42, user2 +;; v58 = iconst.i64 0 +;; @004e v45 = icmp eq v18, v58 ; v58 = 0 ;; @0048 v5 = iconst.i32 -1 -;; @004e v29 = iconst.i64 4 -;; @004e v40 = iadd v31, v66 -;; @004e brif v42, block3, block2(v31) +;; @004e v30 = iconst.i64 4 +;; @004e v43 = iadd v32, v63 +;; @004e brif v45, block3, block2(v32) ;; -;; block2(v43: i64): -;; v68 = iconst.i32 -1 -;; @004e store user2 little region0 v68, v43 ; v68 = -1 -;; v69 = iconst.i64 4 -;; v70 = iadd v43, v69 ; v69 = 4 -;; @004e v46 = icmp eq v70, v40 -;; @004e brif v46, block3, block2(v70) +;; block2(v46: i64): +;; v65 = iconst.i32 -1 +;; @004e store user2 little region0 v65, v46 ; v65 = -1 +;; v66 = iconst.i64 4 +;; v67 = iadd v46, v66 ; v66 = 4 +;; @004e v49 = icmp eq v67, v43 +;; @004e brif v49, block3, block2(v67) ;; ;; block3: ;; @0051 jump block1 diff --git a/tests/disas/array-fill-i32.wat b/tests/disas/array-fill-i32.wat index 8d7e9430e1ee..4cbdb0e5230b 100644 --- a/tests/disas/array-fill-i32.wat +++ b/tests/disas/array-fill-i32.wat @@ -34,8 +34,8 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32, v4: i32, v5: i32): ;; @0031 trapz v2, user16 -;; @0031 v49 = load.i64 notrap aligned readonly can_move v0+8 -;; @0031 v7 = load.i64 notrap aligned readonly can_move v49+32 +;; @0031 v46 = load.i64 notrap aligned readonly can_move v0+8 +;; @0031 v7 = load.i64 notrap aligned readonly can_move v46+32 ;; @0031 v6 = uextend.i64 v2 ;; @0031 v8 = iadd v7, v6 ;; @0031 v9 = iconst.i64 16 @@ -47,29 +47,29 @@ ;; @0031 v12 = uextend.i64 v11 ;; @0031 v18 = icmp ugt v17, v12 ;; @0031 trapnz v18, user17 -;; @0031 v32 = load.i64 notrap aligned v49+40 -;; @0031 v22 = iconst.i64 20 -;; @0031 v23 = iadd v8, v22 ; v22 = 20 -;; v53 = iconst.i64 2 -;; v54 = ishl v13, v53 ; v53 = 2 -;; @0031 v27 = iadd v23, v54 -;; v56 = ishl v14, v53 ; v53 = 2 -;; @0031 v34 = uadd_overflow_trap v27, v56, user2 -;; @0031 v33 = iadd v7, v32 -;; @0031 v35 = icmp ugt v34, v33 -;; @0031 trapnz v35, user2 -;; v51 = iconst.i64 0 -;; @0031 v38 = icmp eq v14, v51 ; v51 = 0 -;; @0031 v25 = iconst.i64 4 -;; @0031 v36 = iadd v27, v56 -;; @0031 brif v38, block3, block2(v27) +;; @0031 v35 = load.i64 notrap aligned v46+40 +;; @0031 v23 = iconst.i64 20 +;; @0031 v24 = iadd v8, v23 ; v23 = 20 +;; v50 = iconst.i64 2 +;; v51 = ishl v13, v50 ; v50 = 2 +;; @0031 v28 = iadd v24, v51 +;; v53 = ishl v14, v50 ; v50 = 2 +;; @0031 v37 = uadd_overflow_trap v28, v53, user2 +;; @0031 v36 = iadd v7, v35 +;; @0031 v38 = icmp ugt v37, v36 +;; @0031 trapnz v38, user2 +;; v48 = iconst.i64 0 +;; @0031 v41 = icmp eq v14, v48 ; v48 = 0 +;; @0031 v26 = iconst.i64 4 +;; @0031 v39 = iadd v28, v53 +;; @0031 brif v41, block3, block2(v28) ;; -;; block2(v39: i64): -;; @0031 store.i32 user2 little region0 v4, v39 -;; v58 = iconst.i64 4 -;; v59 = iadd v39, v58 ; v58 = 4 -;; @0031 v42 = icmp eq v59, v36 -;; @0031 brif v42, block3, block2(v59) +;; block2(v42: i64): +;; @0031 store.i32 user2 little region0 v4, v42 +;; v55 = iconst.i64 4 +;; v56 = iadd v42, v55 ; v55 = 4 +;; @0031 v45 = icmp eq v56, v39 +;; @0031 brif v45, block3, block2(v56) ;; ;; block3: ;; @0034 jump block1 @@ -93,8 +93,8 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32, v4: i32): ;; @003f trapz v2, user16 -;; @003f v43 = load.i64 notrap aligned readonly can_move v0+8 -;; @003f v7 = load.i64 notrap aligned readonly can_move v43+32 +;; @003f v40 = load.i64 notrap aligned readonly can_move v0+8 +;; @003f v7 = load.i64 notrap aligned readonly can_move v40+32 ;; @003f v6 = uextend.i64 v2 ;; @003f v8 = iadd v7, v6 ;; @003f v9 = iconst.i64 16 @@ -106,19 +106,19 @@ ;; @003f v12 = uextend.i64 v11 ;; @003f v18 = icmp ugt v17, v12 ;; @003f trapnz v18, user17 -;; @003f v32 = load.i64 notrap aligned v43+40 -;; @003f v22 = iconst.i64 20 -;; @003f v23 = iadd v8, v22 ; v22 = 20 -;; v47 = iconst.i64 2 -;; v48 = ishl v13, v47 ; v47 = 2 -;; @003f v27 = iadd v23, v48 -;; v50 = ishl v14, v47 ; v47 = 2 -;; @003f v34 = uadd_overflow_trap v27, v50, user2 -;; @003f v33 = iadd v7, v32 -;; @003f v35 = icmp ugt v34, v33 -;; @003f trapnz v35, user2 +;; @003f v35 = load.i64 notrap aligned v40+40 +;; @003f v23 = iconst.i64 20 +;; @003f v24 = iadd v8, v23 ; v23 = 20 +;; v44 = iconst.i64 2 +;; v45 = ishl v13, v44 ; v44 = 2 +;; @003f v28 = iadd v24, v45 +;; v47 = ishl v14, v44 ; v44 = 2 +;; @003f v37 = uadd_overflow_trap v28, v47, user2 +;; @003f v36 = iadd v7, v35 +;; @003f v38 = icmp ugt v37, v36 +;; @003f trapnz v38, user2 ;; @003b v5 = iconst.i32 0 -;; @003f call fn0(v0, v27, v5, v50) ; v5 = 0 +;; @003f call fn0(v0, v28, v5, v47) ; v5 = 0 ;; @0042 jump block1 ;; ;; block1: @@ -140,8 +140,8 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32, v4: i32): ;; @004d trapz v2, user16 -;; @004d v43 = load.i64 notrap aligned readonly can_move v0+8 -;; @004d v7 = load.i64 notrap aligned readonly can_move v43+32 +;; @004d v40 = load.i64 notrap aligned readonly can_move v0+8 +;; @004d v7 = load.i64 notrap aligned readonly can_move v40+32 ;; @004d v6 = uextend.i64 v2 ;; @004d v8 = iadd v7, v6 ;; @004d v9 = iconst.i64 16 @@ -153,19 +153,19 @@ ;; @004d v12 = uextend.i64 v11 ;; @004d v18 = icmp ugt v17, v12 ;; @004d trapnz v18, user17 -;; @004d v32 = load.i64 notrap aligned v43+40 -;; @004d v22 = iconst.i64 20 -;; @004d v23 = iadd v8, v22 ; v22 = 20 -;; v47 = iconst.i64 2 -;; v48 = ishl v13, v47 ; v47 = 2 -;; @004d v27 = iadd v23, v48 -;; v50 = ishl v14, v47 ; v47 = 2 -;; @004d v34 = uadd_overflow_trap v27, v50, user2 -;; @004d v33 = iadd v7, v32 -;; @004d v35 = icmp ugt v34, v33 -;; @004d trapnz v35, user2 -;; @004d v36 = iconst.i32 255 -;; @004d call fn0(v0, v27, v36, v50) ; v36 = 255 +;; @004d v35 = load.i64 notrap aligned v40+40 +;; @004d v23 = iconst.i64 20 +;; @004d v24 = iadd v8, v23 ; v23 = 20 +;; v44 = iconst.i64 2 +;; v45 = ishl v13, v44 ; v44 = 2 +;; @004d v28 = iadd v24, v45 +;; v47 = ishl v14, v44 ; v44 = 2 +;; @004d v37 = uadd_overflow_trap v28, v47, user2 +;; @004d v36 = iadd v7, v35 +;; @004d v38 = icmp ugt v37, v36 +;; @004d trapnz v38, user2 +;; @004d v39 = iconst.i32 255 +;; @004d call fn0(v0, v28, v39, v47) ; v39 = 255 ;; @0050 jump block1 ;; ;; block1: @@ -185,8 +185,8 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32, v4: i32): ;; @005d trapz v2, user16 -;; @005d v49 = load.i64 notrap aligned readonly can_move v0+8 -;; @005d v7 = load.i64 notrap aligned readonly can_move v49+32 +;; @005d v46 = load.i64 notrap aligned readonly can_move v0+8 +;; @005d v7 = load.i64 notrap aligned readonly can_move v46+32 ;; @005d v6 = uextend.i64 v2 ;; @005d v8 = iadd v7, v6 ;; @005d v9 = iconst.i64 16 @@ -198,31 +198,31 @@ ;; @005d v12 = uextend.i64 v11 ;; @005d v18 = icmp ugt v17, v12 ;; @005d trapnz v18, user17 -;; @005d v32 = load.i64 notrap aligned v49+40 -;; @005d v22 = iconst.i64 20 -;; @005d v23 = iadd v8, v22 ; v22 = 20 -;; v53 = iconst.i64 2 -;; v54 = ishl v13, v53 ; v53 = 2 -;; @005d v27 = iadd v23, v54 -;; v56 = ishl v14, v53 ; v53 = 2 -;; @005d v34 = uadd_overflow_trap v27, v56, user2 -;; @005d v33 = iadd v7, v32 -;; @005d v35 = icmp ugt v34, v33 -;; @005d trapnz v35, user2 -;; v51 = iconst.i64 0 -;; @005d v38 = icmp eq v14, v51 ; v51 = 0 +;; @005d v35 = load.i64 notrap aligned v46+40 +;; @005d v23 = iconst.i64 20 +;; @005d v24 = iadd v8, v23 ; v23 = 20 +;; v50 = iconst.i64 2 +;; v51 = ishl v13, v50 ; v50 = 2 +;; @005d v28 = iadd v24, v51 +;; v53 = ishl v14, v50 ; v50 = 2 +;; @005d v37 = uadd_overflow_trap v28, v53, user2 +;; @005d v36 = iadd v7, v35 +;; @005d v38 = icmp ugt v37, v36 +;; @005d trapnz v38, user2 +;; v48 = iconst.i64 0 +;; @005d v41 = icmp eq v14, v48 ; v48 = 0 ;; @0057 v5 = iconst.i32 0xdead -;; @005d v25 = iconst.i64 4 -;; @005d v36 = iadd v27, v56 -;; @005d brif v38, block3, block2(v27) +;; @005d v26 = iconst.i64 4 +;; @005d v39 = iadd v28, v53 +;; @005d brif v41, block3, block2(v28) ;; -;; block2(v39: i64): -;; v58 = iconst.i32 0xdead -;; @005d store user2 little region0 v58, v39 ; v58 = 0xdead -;; v59 = iconst.i64 4 -;; v60 = iadd v39, v59 ; v59 = 4 -;; @005d v42 = icmp eq v60, v36 -;; @005d brif v42, block3, block2(v60) +;; block2(v42: i64): +;; v55 = iconst.i32 0xdead +;; @005d store user2 little region0 v55, v42 ; v55 = 0xdead +;; v56 = iconst.i64 4 +;; v57 = iadd v42, v56 ; v56 = 4 +;; @005d v45 = icmp eq v57, v39 +;; @005d brif v45, block3, block2(v57) ;; ;; block3: ;; @0060 jump block1 diff --git a/tests/disas/array-fill-i64.wat b/tests/disas/array-fill-i64.wat index 64776b3aed16..24c1c9f6cc81 100644 --- a/tests/disas/array-fill-i64.wat +++ b/tests/disas/array-fill-i64.wat @@ -34,8 +34,8 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32, v4: i64, v5: i32): ;; @0031 trapz v2, user16 -;; @0031 v49 = load.i64 notrap aligned readonly can_move v0+8 -;; @0031 v7 = load.i64 notrap aligned readonly can_move v49+32 +;; @0031 v46 = load.i64 notrap aligned readonly can_move v0+8 +;; @0031 v7 = load.i64 notrap aligned readonly can_move v46+32 ;; @0031 v6 = uextend.i64 v2 ;; @0031 v8 = iadd v7, v6 ;; @0031 v9 = iconst.i64 16 @@ -47,29 +47,29 @@ ;; @0031 v12 = uextend.i64 v11 ;; @0031 v18 = icmp ugt v17, v12 ;; @0031 trapnz v18, user17 -;; @0031 v32 = load.i64 notrap aligned v49+40 -;; @0031 v22 = iconst.i64 24 -;; @0031 v23 = iadd v8, v22 ; v22 = 24 -;; v53 = iconst.i64 3 -;; v54 = ishl v13, v53 ; v53 = 3 -;; @0031 v27 = iadd v23, v54 -;; v56 = ishl v14, v53 ; v53 = 3 -;; @0031 v34 = uadd_overflow_trap v27, v56, user2 -;; @0031 v33 = iadd v7, v32 -;; @0031 v35 = icmp ugt v34, v33 -;; @0031 trapnz v35, user2 -;; v51 = iconst.i64 0 -;; @0031 v38 = icmp eq v14, v51 ; v51 = 0 -;; @0031 v25 = iconst.i64 8 -;; @0031 v36 = iadd v27, v56 -;; @0031 brif v38, block3, block2(v27) +;; @0031 v35 = load.i64 notrap aligned v46+40 +;; @0031 v23 = iconst.i64 24 +;; @0031 v24 = iadd v8, v23 ; v23 = 24 +;; v50 = iconst.i64 3 +;; v51 = ishl v13, v50 ; v50 = 3 +;; @0031 v28 = iadd v24, v51 +;; v53 = ishl v14, v50 ; v50 = 3 +;; @0031 v37 = uadd_overflow_trap v28, v53, user2 +;; @0031 v36 = iadd v7, v35 +;; @0031 v38 = icmp ugt v37, v36 +;; @0031 trapnz v38, user2 +;; v48 = iconst.i64 0 +;; @0031 v41 = icmp eq v14, v48 ; v48 = 0 +;; @0031 v26 = iconst.i64 8 +;; @0031 v39 = iadd v28, v53 +;; @0031 brif v41, block3, block2(v28) ;; -;; block2(v39: i64): -;; @0031 store.i64 user2 little region0 v4, v39 -;; v58 = iconst.i64 8 -;; v59 = iadd v39, v58 ; v58 = 8 -;; @0031 v42 = icmp eq v59, v36 -;; @0031 brif v42, block3, block2(v59) +;; block2(v42: i64): +;; @0031 store.i64 user2 little region0 v4, v42 +;; v55 = iconst.i64 8 +;; v56 = iadd v42, v55 ; v55 = 8 +;; @0031 v45 = icmp eq v56, v39 +;; @0031 brif v45, block3, block2(v56) ;; ;; block3: ;; @0034 jump block1 @@ -93,8 +93,8 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32, v4: i32): ;; @003f trapz v2, user16 -;; @003f v43 = load.i64 notrap aligned readonly can_move v0+8 -;; @003f v7 = load.i64 notrap aligned readonly can_move v43+32 +;; @003f v40 = load.i64 notrap aligned readonly can_move v0+8 +;; @003f v7 = load.i64 notrap aligned readonly can_move v40+32 ;; @003f v6 = uextend.i64 v2 ;; @003f v8 = iadd v7, v6 ;; @003f v9 = iconst.i64 16 @@ -106,19 +106,19 @@ ;; @003f v12 = uextend.i64 v11 ;; @003f v18 = icmp ugt v17, v12 ;; @003f trapnz v18, user17 -;; @003f v32 = load.i64 notrap aligned v43+40 -;; @003f v22 = iconst.i64 24 -;; @003f v23 = iadd v8, v22 ; v22 = 24 -;; v46 = iconst.i64 3 -;; v47 = ishl v13, v46 ; v46 = 3 -;; @003f v27 = iadd v23, v47 -;; v49 = ishl v14, v46 ; v46 = 3 -;; @003f v34 = uadd_overflow_trap v27, v49, user2 -;; @003f v33 = iadd v7, v32 -;; @003f v35 = icmp ugt v34, v33 -;; @003f trapnz v35, user2 -;; @003f v36 = iconst.i32 0 -;; @003f call fn0(v0, v27, v36, v49) ; v36 = 0 +;; @003f v35 = load.i64 notrap aligned v40+40 +;; @003f v23 = iconst.i64 24 +;; @003f v24 = iadd v8, v23 ; v23 = 24 +;; v43 = iconst.i64 3 +;; v44 = ishl v13, v43 ; v43 = 3 +;; @003f v28 = iadd v24, v44 +;; v46 = ishl v14, v43 ; v43 = 3 +;; @003f v37 = uadd_overflow_trap v28, v46, user2 +;; @003f v36 = iadd v7, v35 +;; @003f v38 = icmp ugt v37, v36 +;; @003f trapnz v38, user2 +;; @003f v39 = iconst.i32 0 +;; @003f call fn0(v0, v28, v39, v46) ; v39 = 0 ;; @0042 jump block1 ;; ;; block1: @@ -140,8 +140,8 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32, v4: i32): ;; @004d trapz v2, user16 -;; @004d v43 = load.i64 notrap aligned readonly can_move v0+8 -;; @004d v7 = load.i64 notrap aligned readonly can_move v43+32 +;; @004d v40 = load.i64 notrap aligned readonly can_move v0+8 +;; @004d v7 = load.i64 notrap aligned readonly can_move v40+32 ;; @004d v6 = uextend.i64 v2 ;; @004d v8 = iadd v7, v6 ;; @004d v9 = iconst.i64 16 @@ -153,19 +153,19 @@ ;; @004d v12 = uextend.i64 v11 ;; @004d v18 = icmp ugt v17, v12 ;; @004d trapnz v18, user17 -;; @004d v32 = load.i64 notrap aligned v43+40 -;; @004d v22 = iconst.i64 24 -;; @004d v23 = iadd v8, v22 ; v22 = 24 -;; v47 = iconst.i64 3 -;; v48 = ishl v13, v47 ; v47 = 3 -;; @004d v27 = iadd v23, v48 -;; v50 = ishl v14, v47 ; v47 = 3 -;; @004d v34 = uadd_overflow_trap v27, v50, user2 -;; @004d v33 = iadd v7, v32 -;; @004d v35 = icmp ugt v34, v33 -;; @004d trapnz v35, user2 -;; @004d v36 = iconst.i32 255 -;; @004d call fn0(v0, v27, v36, v50) ; v36 = 255 +;; @004d v35 = load.i64 notrap aligned v40+40 +;; @004d v23 = iconst.i64 24 +;; @004d v24 = iadd v8, v23 ; v23 = 24 +;; v44 = iconst.i64 3 +;; v45 = ishl v13, v44 ; v44 = 3 +;; @004d v28 = iadd v24, v45 +;; v47 = ishl v14, v44 ; v44 = 3 +;; @004d v37 = uadd_overflow_trap v28, v47, user2 +;; @004d v36 = iadd v7, v35 +;; @004d v38 = icmp ugt v37, v36 +;; @004d trapnz v38, user2 +;; @004d v39 = iconst.i32 255 +;; @004d call fn0(v0, v28, v39, v47) ; v39 = 255 ;; @0050 jump block1 ;; ;; block1: @@ -185,8 +185,8 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32, v4: i32): ;; @005b trapz v2, user16 -;; @005b v49 = load.i64 notrap aligned readonly can_move v0+8 -;; @005b v7 = load.i64 notrap aligned readonly can_move v49+32 +;; @005b v46 = load.i64 notrap aligned readonly can_move v0+8 +;; @005b v7 = load.i64 notrap aligned readonly can_move v46+32 ;; @005b v6 = uextend.i64 v2 ;; @005b v8 = iadd v7, v6 ;; @005b v9 = iconst.i64 16 @@ -198,31 +198,31 @@ ;; @005b v12 = uextend.i64 v11 ;; @005b v18 = icmp ugt v17, v12 ;; @005b trapnz v18, user17 -;; @005b v32 = load.i64 notrap aligned v49+40 -;; @005b v22 = iconst.i64 24 -;; @005b v23 = iadd v8, v22 ; v22 = 24 -;; v53 = iconst.i64 3 -;; v54 = ishl v13, v53 ; v53 = 3 -;; @005b v27 = iadd v23, v54 -;; v56 = ishl v14, v53 ; v53 = 3 -;; @005b v34 = uadd_overflow_trap v27, v56, user2 -;; @005b v33 = iadd v7, v32 -;; @005b v35 = icmp ugt v34, v33 -;; @005b trapnz v35, user2 -;; v51 = iconst.i64 0 -;; @005b v38 = icmp eq v14, v51 ; v51 = 0 +;; @005b v35 = load.i64 notrap aligned v46+40 +;; @005b v23 = iconst.i64 24 +;; @005b v24 = iadd v8, v23 ; v23 = 24 +;; v50 = iconst.i64 3 +;; v51 = ishl v13, v50 ; v50 = 3 +;; @005b v28 = iadd v24, v51 +;; v53 = ishl v14, v50 ; v50 = 3 +;; @005b v37 = uadd_overflow_trap v28, v53, user2 +;; @005b v36 = iadd v7, v35 +;; @005b v38 = icmp ugt v37, v36 +;; @005b trapnz v38, user2 +;; v48 = iconst.i64 0 +;; @005b v41 = icmp eq v14, v48 ; v48 = 0 ;; @0057 v5 = iconst.i64 1 -;; @005b v25 = iconst.i64 8 -;; @005b v36 = iadd v27, v56 -;; @005b brif v38, block3, block2(v27) +;; @005b v26 = iconst.i64 8 +;; @005b v39 = iadd v28, v53 +;; @005b brif v41, block3, block2(v28) ;; -;; block2(v39: i64): -;; v58 = iconst.i64 1 -;; @005b store user2 little region0 v58, v39 ; v58 = 1 -;; v59 = iconst.i64 8 -;; v60 = iadd v39, v59 ; v59 = 8 -;; @005b v42 = icmp eq v60, v36 -;; @005b brif v42, block3, block2(v60) +;; block2(v42: i64): +;; v55 = iconst.i64 1 +;; @005b store user2 little region0 v55, v42 ; v55 = 1 +;; v56 = iconst.i64 8 +;; v57 = iadd v42, v56 ; v56 = 8 +;; @005b v45 = icmp eq v57, v39 +;; @005b brif v45, block3, block2(v57) ;; ;; block3: ;; @005e jump block1 diff --git a/tests/disas/gc/array-copy-with-fuel.wat b/tests/disas/gc/array-copy-with-fuel.wat index 28d150d7f7f0..7148b3d6dce5 100644 --- a/tests/disas/gc/array-copy-with-fuel.wat +++ b/tests/disas/gc/array-copy-with-fuel.wat @@ -25,10 +25,10 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32, v4: i32, v5: i32, v6: i32): -;; v173 = stack_addr.i64 ss0 -;; store notrap v2, v173 -;; v174 = stack_addr.i64 ss1 -;; store notrap v4, v174 +;; v179 = stack_addr.i64 ss0 +;; store notrap v2, v179 +;; v180 = stack_addr.i64 ss1 +;; store notrap v4, v180 ;; @0020 v7 = load.i64 notrap aligned readonly can_move v0+8 ;; @0020 v8 = load.i64 notrap aligned v7 ;; @0020 v9 = iconst.i64 1 @@ -38,17 +38,17 @@ ;; @0020 brif v12, block2, block3(v10) ;; ;; block2: -;; v199 = iadd.i64 v8, v9 ; v9 = 1 -;; @0020 store notrap aligned v199, v7 +;; v193 = iadd.i64 v8, v9 ; v9 = 1 +;; @0020 store notrap aligned v193, v7 ;; @0020 v14 = call fn0(v0), stack_map=[i32 @ ss0+0, i32 @ ss1+0] ;; @0020 v16 = load.i64 notrap aligned v7 ;; @0020 jump block3(v16) ;; -;; block3(v81: i64): -;; v172 = load.i32 notrap v173 -;; @002b trapz v172, user16 +;; block3(v87: i64): +;; v178 = load.i32 notrap v179 +;; @002b trapz v178, user16 ;; @002b v23 = load.i64 notrap aligned readonly can_move v7+32 -;; @002b v22 = uextend.i64 v172 +;; @002b v22 = uextend.i64 v178 ;; @002b v24 = iadd v23, v22 ;; @002b v25 = iconst.i64 16 ;; @002b v26 = iadd v24, v25 ; v25 = 16 @@ -59,110 +59,110 @@ ;; @002b v28 = uextend.i64 v27 ;; @002b v34 = icmp ugt v33, v28 ;; @002b trapnz v34, user17 -;; v166 = load.i32 notrap v174 -;; @002b trapz v166, user16 -;; @002b v44 = uextend.i64 v166 -;; @002b v46 = iadd v23, v44 -;; @002b v48 = iadd v46, v25 ; v25 = 16 -;; @002b v49 = load.i32 user2 readonly region0 v48 -;; @002b v51 = uextend.i64 v5 -;; @002b v55 = iadd v51, v30 -;; @002b v50 = uextend.i64 v49 -;; @002b v56 = icmp ugt v55, v50 -;; @002b trapnz v56, user17 -;; @002b v72 = load.i64 notrap aligned v7+40 -;; @002b v38 = iconst.i64 20 -;; @002b v39 = iadd v24, v38 ; v38 = 20 -;; v192 = iconst.i64 2 -;; v193 = ishl v29, v192 ; v192 = 2 -;; @002b v43 = iadd v39, v193 -;; v197 = ishl v30, v192 ; v192 = 2 -;; @002b v74 = uadd_overflow_trap v43, v197, user2 -;; @002b v73 = iadd v23, v72 -;; @002b v75 = icmp ugt v74, v73 -;; @002b trapnz v75, user2 -;; @002b v61 = iadd v46, v38 ; v38 = 20 -;; v195 = ishl v51, v192 ; v192 = 2 -;; @002b v65 = iadd v61, v195 -;; @002b v79 = uadd_overflow_trap v65, v197, user2 -;; @002b v80 = icmp ugt v79, v73 -;; @002b trapnz v80, user2 -;; @002b v82 = iconst.i64 6 -;; @002b v83 = iadd v81, v82 ; v82 = 6 -;; @002b brif.i32 v6, block4, block7(v83) +;; v172 = load.i32 notrap v180 +;; @002b trapz v172, user16 +;; @002b v45 = uextend.i64 v172 +;; @002b v47 = iadd v23, v45 +;; @002b v49 = iadd v47, v25 ; v25 = 16 +;; @002b v50 = load.i32 user2 readonly region0 v49 +;; @002b v52 = uextend.i64 v5 +;; @002b v56 = iadd v52, v30 +;; @002b v51 = uextend.i64 v50 +;; @002b v57 = icmp ugt v56, v51 +;; @002b trapnz v57, user17 +;; @002b v76 = load.i64 notrap aligned v7+40 +;; @002b v39 = iconst.i64 20 +;; @002b v40 = iadd v24, v39 ; v39 = 20 +;; v186 = iconst.i64 2 +;; v187 = ishl v29, v186 ; v186 = 2 +;; @002b v44 = iadd v40, v187 +;; v191 = ishl v30, v186 ; v186 = 2 +;; @002b v78 = uadd_overflow_trap v44, v191, user2 +;; @002b v77 = iadd v23, v76 +;; @002b v79 = icmp ugt v78, v77 +;; @002b trapnz v79, user2 +;; @002b v63 = iadd v47, v39 ; v39 = 20 +;; v189 = ishl v52, v186 ; v186 = 2 +;; @002b v67 = iadd v63, v189 +;; @002b v85 = uadd_overflow_trap v67, v191, user2 +;; @002b v86 = icmp ugt v85, v77 +;; @002b trapnz v86, user2 +;; @002b v88 = iconst.i64 6 +;; @002b v89 = iadd v87, v88 ; v88 = 6 +;; @002b brif.i32 v6, block4, block7(v89) ;; ;; block4: -;; v154 = load.i32 notrap v173 -;; v156 = load.i32 notrap v174 -;; @002b v84 = icmp.i64 ult v43, v65 -;; v200 = iadd.i64 v81, v82 ; v82 = 6 -;; @002b v89 = iadd.i64 v43, v197 -;; @002b v90 = iadd.i64 v65, v197 -;; @002b v92 = iadd.i32 v5, v6 -;; @002b v41 = iconst.i64 4 -;; @002b v133 = iconst.i32 1 -;; @002b brif v84, block5(v43, v65, v5, v154, v156, v200), block6(v89, v90, v92, v154, v156, v200) +;; v160 = load.i32 notrap v179 +;; v162 = load.i32 notrap v180 +;; @002b v90 = icmp.i64 ult v44, v67 +;; v194 = iadd.i64 v87, v88 ; v88 = 6 +;; @002b v95 = iadd.i64 v44, v191 +;; @002b v96 = iadd.i64 v67, v191 +;; @002b v98 = iadd.i32 v5, v6 +;; @002b v42 = iconst.i64 4 +;; @002b v139 = iconst.i32 1 +;; @002b brif v90, block5(v44, v67, v5, v160, v162, v194), block6(v95, v96, v98, v160, v162, v194) ;; -;; block5(v93: i64, v94: i64, v95: i32, v96: i32, v97: i32, v98: i64): -;; store notrap v96, v173 -;; store notrap v97, v174 -;; v210 = iconst.i64 1 -;; v211 = iadd v98, v210 ; v210 = 1 -;; v212 = iconst.i64 0 -;; v213 = icmp sge v211, v212 ; v212 = 0 -;; @002b brif v213, block8, block9(v211) +;; block5(v99: i64, v100: i64, v101: i32, v102: i32, v103: i32, v104: i64): +;; store notrap v102, v179 +;; store notrap v103, v180 +;; v204 = iconst.i64 1 +;; v205 = iadd v104, v204 ; v204 = 1 +;; v206 = iconst.i64 0 +;; v207 = icmp sge v205, v206 ; v206 = 0 +;; @002b brif v207, block8, block9(v205) ;; -;; block6(v115: i64, v116: i64, v117: i32, v118: i32, v119: i32, v120: i64): -;; store notrap v118, v174 -;; store notrap v119, v173 -;; v201 = iconst.i64 1 -;; v202 = iadd v120, v201 ; v201 = 1 -;; v203 = iconst.i64 0 -;; v204 = icmp sge v202, v203 ; v203 = 0 -;; @002b brif v204, block10, block11(v202) +;; block6(v121: i64, v122: i64, v123: i32, v124: i32, v125: i32, v126: i64): +;; store notrap v124, v180 +;; store notrap v125, v179 +;; v195 = iconst.i64 1 +;; v196 = iadd v126, v195 ; v195 = 1 +;; v197 = iconst.i64 0 +;; v198 = icmp sge v196, v197 ; v197 = 0 +;; @002b brif v198, block10, block11(v196) ;; -;; block7(v140: i64): +;; block7(v146: i64): ;; @002f jump block1 ;; ;; block8: -;; @002b store.i64 notrap aligned v211, v7 -;; @002b v104 = call fn0(v0), stack_map=[i32 @ ss0+0, i32 @ ss1+0] -;; @002b v106 = load.i64 notrap aligned v7 -;; @002b jump block9(v106) +;; @002b store.i64 notrap aligned v205, v7 +;; @002b v110 = call fn0(v0), stack_map=[i32 @ ss0+0, i32 @ ss1+0] +;; @002b v112 = load.i64 notrap aligned v7 +;; @002b jump block9(v112) ;; -;; block9(v137: i64): -;; @002b v107 = load.i32 user2 little region0 v94 -;; @002b store user2 little region0 v107, v93 -;; v142 = load.i32 notrap v173 -;; v144 = load.i32 notrap v174 -;; v214 = iconst.i64 4 -;; v215 = iadd.i64 v94, v214 ; v214 = 4 -;; @002b v114 = icmp eq v215, v90 -;; v216 = iadd.i64 v93, v214 ; v214 = 4 -;; v217 = iconst.i32 1 -;; v218 = iadd.i32 v95, v217 ; v217 = 1 -;; @002b brif v114, block7(v137), block5(v216, v215, v218, v142, v144, v137) +;; block9(v143: i64): +;; @002b v113 = load.i32 user2 little region0 v100 +;; @002b store user2 little region0 v113, v99 +;; v148 = load.i32 notrap v179 +;; v150 = load.i32 notrap v180 +;; v208 = iconst.i64 4 +;; v209 = iadd.i64 v100, v208 ; v208 = 4 +;; @002b v120 = icmp eq v209, v96 +;; v210 = iadd.i64 v99, v208 ; v208 = 4 +;; v211 = iconst.i32 1 +;; v212 = iadd.i32 v101, v211 ; v211 = 1 +;; @002b brif v120, block7(v143), block5(v210, v209, v212, v148, v150, v143) ;; ;; block10: -;; @002b store.i64 notrap aligned v202, v7 -;; @002b v126 = call fn0(v0), stack_map=[i32 @ ss1+0, i32 @ ss0+0] -;; @002b v128 = load.i64 notrap aligned v7 -;; @002b jump block11(v128) +;; @002b store.i64 notrap aligned v196, v7 +;; @002b v132 = call fn0(v0), stack_map=[i32 @ ss1+0, i32 @ ss0+0] +;; @002b v134 = load.i64 notrap aligned v7 +;; @002b jump block11(v134) ;; -;; block11(v138: i64): -;; v205 = iconst.i64 4 -;; v206 = isub.i64 v116, v205 ; v205 = 4 -;; @002b v135 = load.i32 user2 little region0 v206 -;; v207 = isub.i64 v115, v205 ; v205 = 4 -;; @002b store user2 little region0 v135, v207 -;; v148 = load.i32 notrap v174 -;; v150 = load.i32 notrap v173 -;; @002b v136 = icmp eq v206, v65 -;; v208 = iconst.i32 1 -;; v209 = isub.i32 v117, v208 ; v208 = 1 -;; @002b brif v136, block7(v138), block6(v207, v206, v209, v148, v150, v138) +;; block11(v144: i64): +;; v199 = iconst.i64 4 +;; v200 = isub.i64 v122, v199 ; v199 = 4 +;; @002b v141 = load.i32 user2 little region0 v200 +;; v201 = isub.i64 v121, v199 ; v199 = 4 +;; @002b store user2 little region0 v141, v201 +;; v154 = load.i32 notrap v180 +;; v156 = load.i32 notrap v179 +;; @002b v142 = icmp eq v200, v67 +;; v202 = iconst.i32 1 +;; v203 = isub.i32 v123, v202 ; v202 = 1 +;; @002b brif v142, block7(v144), block6(v201, v200, v203, v154, v156, v144) ;; ;; block1: -;; @002f store.i64 notrap aligned v140, v7 +;; @002f store.i64 notrap aligned v146, v7 ;; @002f return ;; } diff --git a/tests/disas/gc/array-fill-i8.wat b/tests/disas/gc/array-fill-i8.wat index 247c78d06246..48038d3b0e58 100644 --- a/tests/disas/gc/array-fill-i8.wat +++ b/tests/disas/gc/array-fill-i8.wat @@ -24,8 +24,8 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32, v4: i32, v5: i32): ;; @0027 trapz v2, user16 -;; @0027 v42 = load.i64 notrap aligned readonly can_move v0+8 -;; @0027 v7 = load.i64 notrap aligned readonly can_move v42+32 +;; @0027 v39 = load.i64 notrap aligned readonly can_move v0+8 +;; @0027 v7 = load.i64 notrap aligned readonly can_move v39+32 ;; @0027 v6 = uextend.i64 v2 ;; @0027 v8 = iadd v7, v6 ;; @0027 v9 = iconst.i64 16 @@ -37,15 +37,15 @@ ;; @0027 v12 = uextend.i64 v11 ;; @0027 v18 = icmp ugt v17, v12 ;; @0027 trapnz v18, user17 -;; @0027 v32 = load.i64 notrap aligned v42+40 -;; @0027 v22 = iconst.i64 20 -;; @0027 v23 = iadd v8, v22 ; v22 = 20 -;; @0027 v27 = iadd v23, v13 -;; @0027 v34 = uadd_overflow_trap v27, v14, user2 -;; @0027 v33 = iadd v7, v32 -;; @0027 v35 = icmp ugt v34, v33 -;; @0027 trapnz v35, user2 -;; @0027 call fn0(v0, v27, v4, v14) +;; @0027 v35 = load.i64 notrap aligned v39+40 +;; @0027 v23 = iconst.i64 20 +;; @0027 v24 = iadd v8, v23 ; v23 = 20 +;; @0027 v28 = iadd v24, v13 +;; @0027 v37 = uadd_overflow_trap v28, v14, user2 +;; @0027 v36 = iadd v7, v35 +;; @0027 v38 = icmp ugt v37, v36 +;; @0027 trapnz v38, user2 +;; @0027 call fn0(v0, v28, v4, v14) ;; @002a jump block1 ;; ;; block1: diff --git a/tests/disas/gc/array-init-data.wat b/tests/disas/gc/array-init-data.wat index 78b7b35c1588..47a4cc989736 100644 --- a/tests/disas/gc/array-init-data.wat +++ b/tests/disas/gc/array-init-data.wat @@ -28,8 +28,8 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32, v4: i32, v5: i32): ;; @002a trapz v2, user16 -;; @002a v55 = load.i64 notrap aligned readonly can_move v0+8 -;; @002a v7 = load.i64 notrap aligned readonly can_move v55+32 +;; @002a v52 = load.i64 notrap aligned readonly can_move v0+8 +;; @002a v7 = load.i64 notrap aligned readonly can_move v52+32 ;; @002a v6 = uextend.i64 v2 ;; @002a v8 = iadd v7, v6 ;; @002a v9 = iconst.i64 16 @@ -41,23 +41,23 @@ ;; @002a v12 = uextend.i64 v11 ;; @002a v18 = icmp ugt v17, v12 ;; @002a trapnz v18, user17 -;; @002a v28 = load.i32 notrap aligned v0+56 -;; @002a v30 = uextend.i64 v4 -;; @002a v34 = iadd v30, v14 -;; @002a v29 = uextend.i64 v28 -;; @002a v35 = icmp ugt v34, v29 -;; @002a trapnz v35, heap_oob -;; @002a v36 = load.i64 notrap aligned v0+48 -;; @002a v45 = load.i64 notrap aligned v55+40 -;; @002a v22 = iconst.i64 20 -;; @002a v23 = iadd v8, v22 ; v22 = 20 -;; @002a v27 = iadd v23, v13 -;; @002a v47 = uadd_overflow_trap v27, v14, user2 -;; @002a v46 = iadd v7, v45 -;; @002a v48 = icmp ugt v47, v46 -;; @002a trapnz v48, user2 -;; @002a v38 = iadd v36, v30 -;; @002a call fn0(v0, v27, v38, v14) +;; @002a v29 = load.i32 notrap aligned v0+56 +;; @002a v31 = uextend.i64 v4 +;; @002a v35 = iadd v31, v14 +;; @002a v30 = uextend.i64 v29 +;; @002a v36 = icmp ugt v35, v30 +;; @002a trapnz v36, heap_oob +;; @002a v37 = load.i64 notrap aligned v0+48 +;; @002a v48 = load.i64 notrap aligned v52+40 +;; @002a v23 = iconst.i64 20 +;; @002a v24 = iadd v8, v23 ; v23 = 20 +;; @002a v28 = iadd v24, v13 +;; @002a v50 = uadd_overflow_trap v28, v14, user2 +;; @002a v49 = iadd v7, v48 +;; @002a v51 = icmp ugt v50, v49 +;; @002a trapnz v51, user2 +;; @002a v39 = iadd v37, v31 +;; @002a call fn0(v0, v28, v39, v14) ;; @002e jump block1 ;; ;; block1: diff --git a/tests/disas/gc/array-new-data.wat b/tests/disas/gc/array-new-data.wat index d674c6e7cb91..d37133cb1003 100644 --- a/tests/disas/gc/array-new-data.wat +++ b/tests/disas/gc/array-new-data.wat @@ -121,23 +121,23 @@ ;; @0025 brif v35, block2, block3 ;; ;; block2: -;; v127 = iconst.i32 15 -;; v128 = iadd.i32 v23, v127 ; v127 = 15 -;; v131 = iconst.i32 -16 -;; v132 = band v128, v131 ; v131 = -16 -;; v134 = iadd.i32 v25, v132 -;; @0025 store notrap aligned region0 v134, v24 -;; v148 = iconst.i32 -1476395002 -;; v149 = load.i64 notrap aligned readonly can_move v0+8 -;; v150 = load.i64 notrap aligned readonly can_move v149+32 -;; @0025 v47 = iadd v150, v32 -;; @0025 store notrap aligned v148, v47 ; v148 = -1476395002 -;; v151 = load.i64 notrap aligned readonly can_move v0+40 -;; v152 = load.i32 notrap aligned readonly can_move v151 -;; @0025 store notrap aligned v152, v47+4 -;; v153 = band.i64 v30, v29 ; v29 = -16 -;; @0025 istore32 notrap aligned v153, v47+8 -;; @0025 jump block4(v25, v47) +;; v122 = iconst.i32 15 +;; v123 = iadd.i32 v23, v122 ; v122 = 15 +;; v126 = iconst.i32 -16 +;; v127 = band v123, v126 ; v126 = -16 +;; v129 = iadd.i32 v25, v127 +;; @0025 store notrap aligned region0 v129, v24 +;; v143 = iconst.i32 -1476395002 +;; v144 = load.i64 notrap aligned readonly can_move v0+8 +;; v145 = load.i64 notrap aligned readonly can_move v144+32 +;; @0025 v49 = iadd v145, v32 +;; @0025 store notrap aligned v143, v49 ; v143 = -1476395002 +;; v146 = load.i64 notrap aligned readonly can_move v0+40 +;; v147 = load.i32 notrap aligned readonly can_move v146 +;; @0025 store notrap aligned v147, v49+4 +;; v148 = band.i64 v30, v29 ; v29 = -16 +;; @0025 istore32 notrap aligned v148, v49+8 +;; @0025 jump block4(v25, v49) ;; ;; block3 cold: ;; @0025 v36 = iconst.i32 -1476395002 @@ -145,45 +145,45 @@ ;; @0025 v38 = load.i32 notrap aligned readonly can_move v37 ;; @0025 v39 = iconst.i32 16 ;; @0025 v40 = call fn0(v0, v36, v38, v23, v39) ; v36 = -1476395002, v39 = 16 -;; @0025 v116 = load.i64 notrap aligned readonly can_move v0+8 -;; @0025 v41 = load.i64 notrap aligned readonly can_move v116+32 -;; @0025 v42 = uextend.i64 v40 -;; @0025 v43 = iadd v41, v42 -;; @0025 jump block4(v40, v43) +;; @0025 v41 = load.i64 notrap aligned readonly can_move v0+8 +;; @0025 v42 = load.i64 notrap aligned readonly can_move v41+32 +;; @0025 v43 = uextend.i64 v40 +;; @0025 v44 = iadd v42, v43 +;; @0025 jump block4(v40, v44) ;; -;; block4(v51: i32, v52: i64): -;; v107 = stack_addr.i64 ss0 -;; store notrap v51, v107 -;; @0025 v53 = iconst.i64 16 -;; @0025 v54 = iadd v52, v53 ; v53 = 16 -;; @0025 store.i32 user2 region1 v3, v54 -;; @0025 trapz v51, user16 -;; v154 = load.i64 notrap aligned readonly can_move v0+8 -;; v155 = load.i64 notrap aligned readonly can_move v154+32 -;; @0025 v56 = uextend.i64 v51 -;; @0025 v58 = iadd v155, v56 -;; @0025 v60 = iadd v58, v53 ; v53 = 16 -;; @0025 v61 = load.i32 user2 readonly region1 v60 -;; @0025 v62 = uextend.i64 v61 -;; @0025 v68 = icmp.i64 ugt v8, v62 -;; @0025 trapnz v68, user17 -;; @0025 v78 = load.i32 notrap aligned v0+56 -;; @0025 v79 = uextend.i64 v78 -;; @0025 v85 = icmp.i64 ugt v11, v79 -;; @0025 trapnz v85, heap_oob -;; @0025 v86 = load.i64 notrap aligned v0+48 -;; @0025 v95 = load.i64 notrap aligned v154+40 -;; @0025 v72 = iconst.i64 20 -;; @0025 v73 = iadd v58, v72 ; v72 = 20 -;; @0025 v97 = uadd_overflow_trap v73, v8, user2 -;; @0025 v96 = iadd v155, v95 -;; @0025 v98 = icmp ugt v97, v96 -;; @0025 trapnz v98, user2 -;; @0025 v88 = iadd v86, v7 -;; @0025 call fn1(v0, v73, v88, v8), stack_map=[i32 @ ss0+0] -;; v100 = load.i32 notrap v107 +;; block4(v53: i32, v54: i64): +;; v112 = stack_addr.i64 ss0 +;; store notrap v53, v112 +;; @0025 v55 = iconst.i64 16 +;; @0025 v56 = iadd v54, v55 ; v55 = 16 +;; @0025 store.i32 user2 region1 v3, v56 +;; @0025 trapz v53, user16 +;; v149 = load.i64 notrap aligned readonly can_move v0+8 +;; v150 = load.i64 notrap aligned readonly can_move v149+32 +;; @0025 v58 = uextend.i64 v53 +;; @0025 v60 = iadd v150, v58 +;; @0025 v62 = iadd v60, v55 ; v55 = 16 +;; @0025 v63 = load.i32 user2 readonly region1 v62 +;; @0025 v64 = uextend.i64 v63 +;; @0025 v70 = icmp.i64 ugt v8, v64 +;; @0025 trapnz v70, user17 +;; @0025 v81 = load.i32 notrap aligned v0+56 +;; @0025 v82 = uextend.i64 v81 +;; @0025 v88 = icmp.i64 ugt v11, v82 +;; @0025 trapnz v88, heap_oob +;; @0025 v89 = load.i64 notrap aligned v0+48 +;; @0025 v100 = load.i64 notrap aligned v149+40 +;; @0025 v75 = iconst.i64 20 +;; @0025 v76 = iadd v60, v75 ; v75 = 20 +;; @0025 v102 = uadd_overflow_trap v76, v8, user2 +;; @0025 v101 = iadd v150, v100 +;; @0025 v103 = icmp ugt v102, v101 +;; @0025 trapnz v103, user2 +;; @0025 v91 = iadd v89, v7 +;; @0025 call fn1(v0, v76, v91, v8), stack_map=[i32 @ ss0+0] +;; v105 = load.i32 notrap v112 ;; @0029 jump block1 ;; ;; block1: -;; @0029 return v100 +;; @0029 return v105 ;; } diff --git a/tests/disas/gc/array-new-default-anyref.wat b/tests/disas/gc/array-new-default-anyref.wat index 0842b028be8c..979206bcc5b8 100644 --- a/tests/disas/gc/array-new-default-anyref.wat +++ b/tests/disas/gc/array-new-default-anyref.wat @@ -25,15 +25,15 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32): ;; @001f v5 = uextend.i64 v2 -;; v94 = iconst.i64 2 -;; v95 = ishl v5, v94 ; v94 = 2 +;; v89 = iconst.i64 2 +;; v90 = ishl v5, v89 ; v89 = 2 ;; @001f v8 = iconst.i64 32 -;; @001f v9 = ushr v95, v8 ; v8 = 32 +;; @001f v9 = ushr v90, v8 ; v8 = 32 ;; @001f trapnz v9, user18 ;; @001f v4 = iconst.i32 20 -;; v101 = iconst.i32 2 -;; v102 = ishl v2, v101 ; v101 = 2 -;; @001f v11 = uadd_overflow_trap v4, v102, user18 ; v4 = 20 +;; v96 = iconst.i32 2 +;; v97 = ishl v2, v96 ; v96 = 2 +;; @001f v11 = uadd_overflow_trap v4, v97, user18 ; v4 = 20 ;; @001f v12 = load.i64 notrap aligned readonly can_move v0+32 ;; @001f v13 = load.i32 notrap aligned v12 ;; @001f v14 = load.i32 notrap aligned v12+4 @@ -49,23 +49,23 @@ ;; @001f brif v23, block2, block3 ;; ;; block2: -;; v110 = iconst.i32 15 -;; v111 = iadd.i32 v11, v110 ; v110 = 15 -;; v114 = iconst.i32 -16 -;; v115 = band v111, v114 ; v114 = -16 -;; v117 = iadd.i32 v13, v115 -;; @001f store notrap aligned region0 v117, v12 -;; v133 = iconst.i32 -1476394994 -;; v134 = load.i64 notrap aligned readonly can_move v0+8 -;; v135 = load.i64 notrap aligned readonly can_move v134+32 -;; @001f v35 = iadd v135, v20 -;; @001f store notrap aligned v133, v35 ; v133 = -1476394994 -;; v136 = load.i64 notrap aligned readonly can_move v0+40 -;; v137 = load.i32 notrap aligned readonly can_move v136 -;; @001f store notrap aligned v137, v35+4 -;; v138 = band.i64 v18, v17 ; v17 = -16 -;; @001f istore32 notrap aligned v138, v35+8 -;; @001f jump block4(v13, v35) +;; v105 = iconst.i32 15 +;; v106 = iadd.i32 v11, v105 ; v105 = 15 +;; v109 = iconst.i32 -16 +;; v110 = band v106, v109 ; v109 = -16 +;; v112 = iadd.i32 v13, v110 +;; @001f store notrap aligned region0 v112, v12 +;; v128 = iconst.i32 -1476394994 +;; v129 = load.i64 notrap aligned readonly can_move v0+8 +;; v130 = load.i64 notrap aligned readonly can_move v129+32 +;; @001f v37 = iadd v130, v20 +;; @001f store notrap aligned v128, v37 ; v128 = -1476394994 +;; v131 = load.i64 notrap aligned readonly can_move v0+40 +;; v132 = load.i32 notrap aligned readonly can_move v131 +;; @001f store notrap aligned v132, v37+4 +;; v133 = band.i64 v18, v17 ; v17 = -16 +;; @001f istore32 notrap aligned v133, v37+8 +;; @001f jump block4(v13, v37) ;; ;; block3 cold: ;; @001f v24 = iconst.i32 -1476394994 @@ -73,50 +73,50 @@ ;; @001f v26 = load.i32 notrap aligned readonly can_move v25 ;; @001f v27 = iconst.i32 16 ;; @001f v28 = call fn0(v0, v24, v26, v11, v27) ; v24 = -1476394994, v27 = 16 -;; @001f v90 = load.i64 notrap aligned readonly can_move v0+8 -;; @001f v29 = load.i64 notrap aligned readonly can_move v90+32 -;; @001f v30 = uextend.i64 v28 -;; @001f v31 = iadd v29, v30 -;; @001f jump block4(v28, v31) +;; @001f v29 = load.i64 notrap aligned readonly can_move v0+8 +;; @001f v30 = load.i64 notrap aligned readonly can_move v29+32 +;; @001f v31 = uextend.i64 v28 +;; @001f v32 = iadd v30, v31 +;; @001f jump block4(v28, v32) ;; -;; block4(v39: i32, v40: i64): -;; @001f v41 = iconst.i64 16 -;; @001f v42 = iadd v40, v41 ; v41 = 16 -;; @001f store.i32 user2 region1 v2, v42 -;; @001f trapz v39, user16 -;; v139 = load.i64 notrap aligned readonly can_move v0+8 -;; v140 = load.i64 notrap aligned readonly can_move v139+32 -;; @001f v45 = uextend.i64 v39 -;; @001f v47 = iadd v140, v45 -;; @001f v49 = iadd v47, v41 ; v41 = 16 -;; @001f v50 = load.i32 user2 readonly region1 v49 -;; @001f v51 = uextend.i64 v50 -;; @001f v57 = icmp.i64 ugt v5, v51 -;; @001f trapnz v57, user17 -;; @001f v71 = load.i64 notrap aligned v139+40 -;; @001f v61 = iconst.i64 20 -;; @001f v62 = iadd v47, v61 ; v61 = 20 -;; @001f v73 = uadd_overflow_trap v62, v95, user2 -;; @001f v72 = iadd v140, v71 -;; @001f v74 = icmp ugt v73, v72 -;; @001f trapnz v74, user2 -;; v119 = iconst.i64 0 -;; @001f v77 = icmp.i64 eq v5, v119 ; v119 = 0 -;; @001f v43 = iconst.i32 0 +;; block4(v41: i32, v42: i64): +;; @001f v43 = iconst.i64 16 +;; @001f v44 = iadd v42, v43 ; v43 = 16 +;; @001f store.i32 user2 region1 v2, v44 +;; @001f trapz v41, user16 +;; v134 = load.i64 notrap aligned readonly can_move v0+8 +;; v135 = load.i64 notrap aligned readonly can_move v134+32 +;; @001f v47 = uextend.i64 v41 +;; @001f v49 = iadd v135, v47 +;; @001f v51 = iadd v49, v43 ; v43 = 16 +;; @001f v52 = load.i32 user2 readonly region1 v51 +;; @001f v53 = uextend.i64 v52 +;; @001f v59 = icmp.i64 ugt v5, v53 +;; @001f trapnz v59, user17 +;; @001f v76 = load.i64 notrap aligned v134+40 +;; @001f v64 = iconst.i64 20 +;; @001f v65 = iadd v49, v64 ; v64 = 20 +;; @001f v78 = uadd_overflow_trap v65, v90, user2 +;; @001f v77 = iadd v135, v76 +;; @001f v79 = icmp ugt v78, v77 +;; @001f trapnz v79, user2 +;; v114 = iconst.i64 0 +;; @001f v82 = icmp.i64 eq v5, v114 ; v114 = 0 +;; @001f v45 = iconst.i32 0 ;; @001f v6 = iconst.i64 4 -;; @001f v75 = iadd v62, v95 -;; @001f brif v77, block6, block5(v62) +;; @001f v80 = iadd v65, v90 +;; @001f brif v82, block6, block5(v65) ;; -;; block5(v78: i64): -;; v141 = iconst.i32 0 -;; @001f store user2 little region1 v141, v78 ; v141 = 0 -;; v142 = iconst.i64 4 -;; v143 = iadd v78, v142 ; v142 = 4 -;; @001f v81 = icmp eq v143, v75 -;; @001f brif v81, block6, block5(v143) +;; block5(v83: i64): +;; v136 = iconst.i32 0 +;; @001f store user2 little region1 v136, v83 ; v136 = 0 +;; v137 = iconst.i64 4 +;; v138 = iadd v83, v137 ; v137 = 4 +;; @001f v86 = icmp eq v138, v80 +;; @001f brif v86, block6, block5(v138) ;; ;; block6: -;; @0022 jump block1(v39) +;; @0022 jump block1(v41) ;; ;; block1(v3: i32): ;; @0022 return v3 diff --git a/tests/disas/gc/array-new-default-exnref.wat b/tests/disas/gc/array-new-default-exnref.wat index 236ccc342a30..b4e7b04303f9 100644 --- a/tests/disas/gc/array-new-default-exnref.wat +++ b/tests/disas/gc/array-new-default-exnref.wat @@ -25,15 +25,15 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32): ;; @001f v5 = uextend.i64 v2 -;; v94 = iconst.i64 2 -;; v95 = ishl v5, v94 ; v94 = 2 +;; v89 = iconst.i64 2 +;; v90 = ishl v5, v89 ; v89 = 2 ;; @001f v8 = iconst.i64 32 -;; @001f v9 = ushr v95, v8 ; v8 = 32 +;; @001f v9 = ushr v90, v8 ; v8 = 32 ;; @001f trapnz v9, user18 ;; @001f v4 = iconst.i32 20 -;; v101 = iconst.i32 2 -;; v102 = ishl v2, v101 ; v101 = 2 -;; @001f v11 = uadd_overflow_trap v4, v102, user18 ; v4 = 20 +;; v96 = iconst.i32 2 +;; v97 = ishl v2, v96 ; v96 = 2 +;; @001f v11 = uadd_overflow_trap v4, v97, user18 ; v4 = 20 ;; @001f v12 = load.i64 notrap aligned readonly can_move v0+32 ;; @001f v13 = load.i32 notrap aligned v12 ;; @001f v14 = load.i32 notrap aligned v12+4 @@ -49,23 +49,23 @@ ;; @001f brif v23, block2, block3 ;; ;; block2: -;; v110 = iconst.i32 15 -;; v111 = iadd.i32 v11, v110 ; v110 = 15 -;; v114 = iconst.i32 -16 -;; v115 = band v111, v114 ; v114 = -16 -;; v117 = iadd.i32 v13, v115 -;; @001f store notrap aligned region0 v117, v12 -;; v133 = iconst.i32 -1476394994 -;; v134 = load.i64 notrap aligned readonly can_move v0+8 -;; v135 = load.i64 notrap aligned readonly can_move v134+32 -;; @001f v35 = iadd v135, v20 -;; @001f store notrap aligned v133, v35 ; v133 = -1476394994 -;; v136 = load.i64 notrap aligned readonly can_move v0+40 -;; v137 = load.i32 notrap aligned readonly can_move v136 -;; @001f store notrap aligned v137, v35+4 -;; v138 = band.i64 v18, v17 ; v17 = -16 -;; @001f istore32 notrap aligned v138, v35+8 -;; @001f jump block4(v13, v35) +;; v105 = iconst.i32 15 +;; v106 = iadd.i32 v11, v105 ; v105 = 15 +;; v109 = iconst.i32 -16 +;; v110 = band v106, v109 ; v109 = -16 +;; v112 = iadd.i32 v13, v110 +;; @001f store notrap aligned region0 v112, v12 +;; v128 = iconst.i32 -1476394994 +;; v129 = load.i64 notrap aligned readonly can_move v0+8 +;; v130 = load.i64 notrap aligned readonly can_move v129+32 +;; @001f v37 = iadd v130, v20 +;; @001f store notrap aligned v128, v37 ; v128 = -1476394994 +;; v131 = load.i64 notrap aligned readonly can_move v0+40 +;; v132 = load.i32 notrap aligned readonly can_move v131 +;; @001f store notrap aligned v132, v37+4 +;; v133 = band.i64 v18, v17 ; v17 = -16 +;; @001f istore32 notrap aligned v133, v37+8 +;; @001f jump block4(v13, v37) ;; ;; block3 cold: ;; @001f v24 = iconst.i32 -1476394994 @@ -73,50 +73,50 @@ ;; @001f v26 = load.i32 notrap aligned readonly can_move v25 ;; @001f v27 = iconst.i32 16 ;; @001f v28 = call fn0(v0, v24, v26, v11, v27) ; v24 = -1476394994, v27 = 16 -;; @001f v90 = load.i64 notrap aligned readonly can_move v0+8 -;; @001f v29 = load.i64 notrap aligned readonly can_move v90+32 -;; @001f v30 = uextend.i64 v28 -;; @001f v31 = iadd v29, v30 -;; @001f jump block4(v28, v31) +;; @001f v29 = load.i64 notrap aligned readonly can_move v0+8 +;; @001f v30 = load.i64 notrap aligned readonly can_move v29+32 +;; @001f v31 = uextend.i64 v28 +;; @001f v32 = iadd v30, v31 +;; @001f jump block4(v28, v32) ;; -;; block4(v39: i32, v40: i64): -;; @001f v41 = iconst.i64 16 -;; @001f v42 = iadd v40, v41 ; v41 = 16 -;; @001f store.i32 user2 region1 v2, v42 -;; @001f trapz v39, user16 -;; v139 = load.i64 notrap aligned readonly can_move v0+8 -;; v140 = load.i64 notrap aligned readonly can_move v139+32 -;; @001f v45 = uextend.i64 v39 -;; @001f v47 = iadd v140, v45 -;; @001f v49 = iadd v47, v41 ; v41 = 16 -;; @001f v50 = load.i32 user2 readonly region1 v49 -;; @001f v51 = uextend.i64 v50 -;; @001f v57 = icmp.i64 ugt v5, v51 -;; @001f trapnz v57, user17 -;; @001f v71 = load.i64 notrap aligned v139+40 -;; @001f v61 = iconst.i64 20 -;; @001f v62 = iadd v47, v61 ; v61 = 20 -;; @001f v73 = uadd_overflow_trap v62, v95, user2 -;; @001f v72 = iadd v140, v71 -;; @001f v74 = icmp ugt v73, v72 -;; @001f trapnz v74, user2 -;; v119 = iconst.i64 0 -;; @001f v77 = icmp.i64 eq v5, v119 ; v119 = 0 -;; @001f v43 = iconst.i32 0 +;; block4(v41: i32, v42: i64): +;; @001f v43 = iconst.i64 16 +;; @001f v44 = iadd v42, v43 ; v43 = 16 +;; @001f store.i32 user2 region1 v2, v44 +;; @001f trapz v41, user16 +;; v134 = load.i64 notrap aligned readonly can_move v0+8 +;; v135 = load.i64 notrap aligned readonly can_move v134+32 +;; @001f v47 = uextend.i64 v41 +;; @001f v49 = iadd v135, v47 +;; @001f v51 = iadd v49, v43 ; v43 = 16 +;; @001f v52 = load.i32 user2 readonly region1 v51 +;; @001f v53 = uextend.i64 v52 +;; @001f v59 = icmp.i64 ugt v5, v53 +;; @001f trapnz v59, user17 +;; @001f v76 = load.i64 notrap aligned v134+40 +;; @001f v64 = iconst.i64 20 +;; @001f v65 = iadd v49, v64 ; v64 = 20 +;; @001f v78 = uadd_overflow_trap v65, v90, user2 +;; @001f v77 = iadd v135, v76 +;; @001f v79 = icmp ugt v78, v77 +;; @001f trapnz v79, user2 +;; v114 = iconst.i64 0 +;; @001f v82 = icmp.i64 eq v5, v114 ; v114 = 0 +;; @001f v45 = iconst.i32 0 ;; @001f v6 = iconst.i64 4 -;; @001f v75 = iadd v62, v95 -;; @001f brif v77, block6, block5(v62) +;; @001f v80 = iadd v65, v90 +;; @001f brif v82, block6, block5(v65) ;; -;; block5(v78: i64): -;; v141 = iconst.i32 0 -;; @001f store user2 little region1 v141, v78 ; v141 = 0 -;; v142 = iconst.i64 4 -;; v143 = iadd v78, v142 ; v142 = 4 -;; @001f v81 = icmp eq v143, v75 -;; @001f brif v81, block6, block5(v143) +;; block5(v83: i64): +;; v136 = iconst.i32 0 +;; @001f store user2 little region1 v136, v83 ; v136 = 0 +;; v137 = iconst.i64 4 +;; v138 = iadd v83, v137 ; v137 = 4 +;; @001f v86 = icmp eq v138, v80 +;; @001f brif v86, block6, block5(v138) ;; ;; block6: -;; @0022 jump block1(v39) +;; @0022 jump block1(v41) ;; ;; block1(v3: i32): ;; @0022 return v3 diff --git a/tests/disas/gc/array-new-default-externref.wat b/tests/disas/gc/array-new-default-externref.wat index c4b6fc0c95f2..135767da68c3 100644 --- a/tests/disas/gc/array-new-default-externref.wat +++ b/tests/disas/gc/array-new-default-externref.wat @@ -25,15 +25,15 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32): ;; @001f v5 = uextend.i64 v2 -;; v94 = iconst.i64 2 -;; v95 = ishl v5, v94 ; v94 = 2 +;; v89 = iconst.i64 2 +;; v90 = ishl v5, v89 ; v89 = 2 ;; @001f v8 = iconst.i64 32 -;; @001f v9 = ushr v95, v8 ; v8 = 32 +;; @001f v9 = ushr v90, v8 ; v8 = 32 ;; @001f trapnz v9, user18 ;; @001f v4 = iconst.i32 20 -;; v101 = iconst.i32 2 -;; v102 = ishl v2, v101 ; v101 = 2 -;; @001f v11 = uadd_overflow_trap v4, v102, user18 ; v4 = 20 +;; v96 = iconst.i32 2 +;; v97 = ishl v2, v96 ; v96 = 2 +;; @001f v11 = uadd_overflow_trap v4, v97, user18 ; v4 = 20 ;; @001f v12 = load.i64 notrap aligned readonly can_move v0+32 ;; @001f v13 = load.i32 notrap aligned v12 ;; @001f v14 = load.i32 notrap aligned v12+4 @@ -49,23 +49,23 @@ ;; @001f brif v23, block2, block3 ;; ;; block2: -;; v110 = iconst.i32 15 -;; v111 = iadd.i32 v11, v110 ; v110 = 15 -;; v114 = iconst.i32 -16 -;; v115 = band v111, v114 ; v114 = -16 -;; v117 = iadd.i32 v13, v115 -;; @001f store notrap aligned region0 v117, v12 -;; v133 = iconst.i32 -1476394994 -;; v134 = load.i64 notrap aligned readonly can_move v0+8 -;; v135 = load.i64 notrap aligned readonly can_move v134+32 -;; @001f v35 = iadd v135, v20 -;; @001f store notrap aligned v133, v35 ; v133 = -1476394994 -;; v136 = load.i64 notrap aligned readonly can_move v0+40 -;; v137 = load.i32 notrap aligned readonly can_move v136 -;; @001f store notrap aligned v137, v35+4 -;; v138 = band.i64 v18, v17 ; v17 = -16 -;; @001f istore32 notrap aligned v138, v35+8 -;; @001f jump block4(v13, v35) +;; v105 = iconst.i32 15 +;; v106 = iadd.i32 v11, v105 ; v105 = 15 +;; v109 = iconst.i32 -16 +;; v110 = band v106, v109 ; v109 = -16 +;; v112 = iadd.i32 v13, v110 +;; @001f store notrap aligned region0 v112, v12 +;; v128 = iconst.i32 -1476394994 +;; v129 = load.i64 notrap aligned readonly can_move v0+8 +;; v130 = load.i64 notrap aligned readonly can_move v129+32 +;; @001f v37 = iadd v130, v20 +;; @001f store notrap aligned v128, v37 ; v128 = -1476394994 +;; v131 = load.i64 notrap aligned readonly can_move v0+40 +;; v132 = load.i32 notrap aligned readonly can_move v131 +;; @001f store notrap aligned v132, v37+4 +;; v133 = band.i64 v18, v17 ; v17 = -16 +;; @001f istore32 notrap aligned v133, v37+8 +;; @001f jump block4(v13, v37) ;; ;; block3 cold: ;; @001f v24 = iconst.i32 -1476394994 @@ -73,50 +73,50 @@ ;; @001f v26 = load.i32 notrap aligned readonly can_move v25 ;; @001f v27 = iconst.i32 16 ;; @001f v28 = call fn0(v0, v24, v26, v11, v27) ; v24 = -1476394994, v27 = 16 -;; @001f v90 = load.i64 notrap aligned readonly can_move v0+8 -;; @001f v29 = load.i64 notrap aligned readonly can_move v90+32 -;; @001f v30 = uextend.i64 v28 -;; @001f v31 = iadd v29, v30 -;; @001f jump block4(v28, v31) +;; @001f v29 = load.i64 notrap aligned readonly can_move v0+8 +;; @001f v30 = load.i64 notrap aligned readonly can_move v29+32 +;; @001f v31 = uextend.i64 v28 +;; @001f v32 = iadd v30, v31 +;; @001f jump block4(v28, v32) ;; -;; block4(v39: i32, v40: i64): -;; @001f v41 = iconst.i64 16 -;; @001f v42 = iadd v40, v41 ; v41 = 16 -;; @001f store.i32 user2 region1 v2, v42 -;; @001f trapz v39, user16 -;; v139 = load.i64 notrap aligned readonly can_move v0+8 -;; v140 = load.i64 notrap aligned readonly can_move v139+32 -;; @001f v45 = uextend.i64 v39 -;; @001f v47 = iadd v140, v45 -;; @001f v49 = iadd v47, v41 ; v41 = 16 -;; @001f v50 = load.i32 user2 readonly region1 v49 -;; @001f v51 = uextend.i64 v50 -;; @001f v57 = icmp.i64 ugt v5, v51 -;; @001f trapnz v57, user17 -;; @001f v71 = load.i64 notrap aligned v139+40 -;; @001f v61 = iconst.i64 20 -;; @001f v62 = iadd v47, v61 ; v61 = 20 -;; @001f v73 = uadd_overflow_trap v62, v95, user2 -;; @001f v72 = iadd v140, v71 -;; @001f v74 = icmp ugt v73, v72 -;; @001f trapnz v74, user2 -;; v119 = iconst.i64 0 -;; @001f v77 = icmp.i64 eq v5, v119 ; v119 = 0 -;; @001f v43 = iconst.i32 0 +;; block4(v41: i32, v42: i64): +;; @001f v43 = iconst.i64 16 +;; @001f v44 = iadd v42, v43 ; v43 = 16 +;; @001f store.i32 user2 region1 v2, v44 +;; @001f trapz v41, user16 +;; v134 = load.i64 notrap aligned readonly can_move v0+8 +;; v135 = load.i64 notrap aligned readonly can_move v134+32 +;; @001f v47 = uextend.i64 v41 +;; @001f v49 = iadd v135, v47 +;; @001f v51 = iadd v49, v43 ; v43 = 16 +;; @001f v52 = load.i32 user2 readonly region1 v51 +;; @001f v53 = uextend.i64 v52 +;; @001f v59 = icmp.i64 ugt v5, v53 +;; @001f trapnz v59, user17 +;; @001f v76 = load.i64 notrap aligned v134+40 +;; @001f v64 = iconst.i64 20 +;; @001f v65 = iadd v49, v64 ; v64 = 20 +;; @001f v78 = uadd_overflow_trap v65, v90, user2 +;; @001f v77 = iadd v135, v76 +;; @001f v79 = icmp ugt v78, v77 +;; @001f trapnz v79, user2 +;; v114 = iconst.i64 0 +;; @001f v82 = icmp.i64 eq v5, v114 ; v114 = 0 +;; @001f v45 = iconst.i32 0 ;; @001f v6 = iconst.i64 4 -;; @001f v75 = iadd v62, v95 -;; @001f brif v77, block6, block5(v62) +;; @001f v80 = iadd v65, v90 +;; @001f brif v82, block6, block5(v65) ;; -;; block5(v78: i64): -;; v141 = iconst.i32 0 -;; @001f store user2 little region1 v141, v78 ; v141 = 0 -;; v142 = iconst.i64 4 -;; v143 = iadd v78, v142 ; v142 = 4 -;; @001f v81 = icmp eq v143, v75 -;; @001f brif v81, block6, block5(v143) +;; block5(v83: i64): +;; v136 = iconst.i32 0 +;; @001f store user2 little region1 v136, v83 ; v136 = 0 +;; v137 = iconst.i64 4 +;; v138 = iadd v83, v137 ; v137 = 4 +;; @001f v86 = icmp eq v138, v80 +;; @001f brif v86, block6, block5(v138) ;; ;; block6: -;; @0022 jump block1(v39) +;; @0022 jump block1(v41) ;; ;; block1(v3: i32): ;; @0022 return v3 diff --git a/tests/disas/gc/array-new-default-f32.wat b/tests/disas/gc/array-new-default-f32.wat index cd79c1007856..a9a9472385ae 100644 --- a/tests/disas/gc/array-new-default-f32.wat +++ b/tests/disas/gc/array-new-default-f32.wat @@ -28,15 +28,15 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32): ;; @001f v5 = uextend.i64 v2 -;; v97 = iconst.i64 2 -;; v98 = ishl v5, v97 ; v97 = 2 +;; v92 = iconst.i64 2 +;; v93 = ishl v5, v92 ; v92 = 2 ;; @001f v8 = iconst.i64 32 -;; @001f v9 = ushr v98, v8 ; v8 = 32 +;; @001f v9 = ushr v93, v8 ; v8 = 32 ;; @001f trapnz v9, user18 ;; @001f v4 = iconst.i32 20 -;; v104 = iconst.i32 2 -;; v105 = ishl v2, v104 ; v104 = 2 -;; @001f v11 = uadd_overflow_trap v4, v105, user18 ; v4 = 20 +;; v99 = iconst.i32 2 +;; v100 = ishl v2, v99 ; v99 = 2 +;; @001f v11 = uadd_overflow_trap v4, v100, user18 ; v4 = 20 ;; @001f v12 = load.i64 notrap aligned readonly can_move v0+32 ;; @001f v13 = load.i32 notrap aligned v12 ;; @001f v14 = load.i32 notrap aligned v12+4 @@ -52,23 +52,23 @@ ;; @001f brif v23, block2, block3 ;; ;; block2: -;; v113 = iconst.i32 15 -;; v114 = iadd.i32 v11, v113 ; v113 = 15 -;; v117 = iconst.i32 -16 -;; v118 = band v114, v117 ; v117 = -16 -;; v120 = iadd.i32 v13, v118 -;; @001f store notrap aligned region0 v120, v12 -;; v136 = iconst.i32 -1476395002 -;; v137 = load.i64 notrap aligned readonly can_move v0+8 -;; v138 = load.i64 notrap aligned readonly can_move v137+32 -;; @001f v35 = iadd v138, v20 -;; @001f store notrap aligned v136, v35 ; v136 = -1476395002 -;; v139 = load.i64 notrap aligned readonly can_move v0+40 -;; v140 = load.i32 notrap aligned readonly can_move v139 -;; @001f store notrap aligned v140, v35+4 -;; v141 = band.i64 v18, v17 ; v17 = -16 -;; @001f istore32 notrap aligned v141, v35+8 -;; @001f jump block4(v13, v35) +;; v108 = iconst.i32 15 +;; v109 = iadd.i32 v11, v108 ; v108 = 15 +;; v112 = iconst.i32 -16 +;; v113 = band v109, v112 ; v112 = -16 +;; v115 = iadd.i32 v13, v113 +;; @001f store notrap aligned region0 v115, v12 +;; v131 = iconst.i32 -1476395002 +;; v132 = load.i64 notrap aligned readonly can_move v0+8 +;; v133 = load.i64 notrap aligned readonly can_move v132+32 +;; @001f v37 = iadd v133, v20 +;; @001f store notrap aligned v131, v37 ; v131 = -1476395002 +;; v134 = load.i64 notrap aligned readonly can_move v0+40 +;; v135 = load.i32 notrap aligned readonly can_move v134 +;; @001f store notrap aligned v135, v37+4 +;; v136 = band.i64 v18, v17 ; v17 = -16 +;; @001f istore32 notrap aligned v136, v37+8 +;; @001f jump block4(v13, v37) ;; ;; block3 cold: ;; @001f v24 = iconst.i32 -1476395002 @@ -76,40 +76,40 @@ ;; @001f v26 = load.i32 notrap aligned readonly can_move v25 ;; @001f v27 = iconst.i32 16 ;; @001f v28 = call fn0(v0, v24, v26, v11, v27) ; v24 = -1476395002, v27 = 16 -;; @001f v93 = load.i64 notrap aligned readonly can_move v0+8 -;; @001f v29 = load.i64 notrap aligned readonly can_move v93+32 -;; @001f v30 = uextend.i64 v28 -;; @001f v31 = iadd v29, v30 -;; @001f jump block4(v28, v31) +;; @001f v29 = load.i64 notrap aligned readonly can_move v0+8 +;; @001f v30 = load.i64 notrap aligned readonly can_move v29+32 +;; @001f v31 = uextend.i64 v28 +;; @001f v32 = iadd v30, v31 +;; @001f jump block4(v28, v32) ;; -;; block4(v39: i32, v40: i64): -;; v84 = stack_addr.i64 ss0 -;; store notrap v39, v84 -;; @001f v41 = iconst.i64 16 -;; @001f v42 = iadd v40, v41 ; v41 = 16 -;; @001f store.i32 user2 region1 v2, v42 -;; @001f trapz v39, user16 -;; v142 = load.i64 notrap aligned readonly can_move v0+8 -;; v143 = load.i64 notrap aligned readonly can_move v142+32 -;; @001f v45 = uextend.i64 v39 -;; @001f v47 = iadd v143, v45 -;; @001f v49 = iadd v47, v41 ; v41 = 16 -;; @001f v50 = load.i32 user2 readonly region1 v49 -;; @001f v51 = uextend.i64 v50 -;; @001f v57 = icmp.i64 ugt v5, v51 -;; @001f trapnz v57, user17 -;; @001f v71 = load.i64 notrap aligned v142+40 -;; @001f v61 = iconst.i64 20 -;; @001f v62 = iadd v47, v61 ; v61 = 20 -;; @001f v73 = uadd_overflow_trap v62, v98, user2 -;; @001f v72 = iadd v143, v71 -;; @001f v74 = icmp ugt v73, v72 -;; @001f trapnz v74, user2 -;; @001f v44 = iconst.i32 0 -;; @001f call fn1(v0, v62, v44, v98), stack_map=[i32 @ ss0+0] ; v44 = 0 -;; v77 = load.i32 notrap v84 +;; block4(v41: i32, v42: i64): +;; v89 = stack_addr.i64 ss0 +;; store notrap v41, v89 +;; @001f v43 = iconst.i64 16 +;; @001f v44 = iadd v42, v43 ; v43 = 16 +;; @001f store.i32 user2 region1 v2, v44 +;; @001f trapz v41, user16 +;; v137 = load.i64 notrap aligned readonly can_move v0+8 +;; v138 = load.i64 notrap aligned readonly can_move v137+32 +;; @001f v47 = uextend.i64 v41 +;; @001f v49 = iadd v138, v47 +;; @001f v51 = iadd v49, v43 ; v43 = 16 +;; @001f v52 = load.i32 user2 readonly region1 v51 +;; @001f v53 = uextend.i64 v52 +;; @001f v59 = icmp.i64 ugt v5, v53 +;; @001f trapnz v59, user17 +;; @001f v76 = load.i64 notrap aligned v137+40 +;; @001f v64 = iconst.i64 20 +;; @001f v65 = iadd v49, v64 ; v64 = 20 +;; @001f v78 = uadd_overflow_trap v65, v93, user2 +;; @001f v77 = iadd v138, v76 +;; @001f v79 = icmp ugt v78, v77 +;; @001f trapnz v79, user2 +;; @001f v46 = iconst.i32 0 +;; @001f call fn1(v0, v65, v46, v93), stack_map=[i32 @ ss0+0] ; v46 = 0 +;; v82 = load.i32 notrap v89 ;; @0022 jump block1 ;; ;; block1: -;; @0022 return v77 +;; @0022 return v82 ;; } diff --git a/tests/disas/gc/array-new-default-f64.wat b/tests/disas/gc/array-new-default-f64.wat index d8ea912502e1..9b32e4497e8f 100644 --- a/tests/disas/gc/array-new-default-f64.wat +++ b/tests/disas/gc/array-new-default-f64.wat @@ -28,15 +28,15 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32): ;; @001f v5 = uextend.i64 v2 -;; v97 = iconst.i64 3 -;; v98 = ishl v5, v97 ; v97 = 3 +;; v92 = iconst.i64 3 +;; v93 = ishl v5, v92 ; v92 = 3 ;; @001f v8 = iconst.i64 32 -;; @001f v9 = ushr v98, v8 ; v8 = 32 +;; @001f v9 = ushr v93, v8 ; v8 = 32 ;; @001f trapnz v9, user18 ;; @001f v4 = iconst.i32 24 -;; v104 = iconst.i32 3 -;; v105 = ishl v2, v104 ; v104 = 3 -;; @001f v11 = uadd_overflow_trap v4, v105, user18 ; v4 = 24 +;; v99 = iconst.i32 3 +;; v100 = ishl v2, v99 ; v99 = 3 +;; @001f v11 = uadd_overflow_trap v4, v100, user18 ; v4 = 24 ;; @001f v12 = load.i64 notrap aligned readonly can_move v0+32 ;; @001f v13 = load.i32 notrap aligned v12 ;; @001f v14 = load.i32 notrap aligned v12+4 @@ -52,23 +52,23 @@ ;; @001f brif v23, block2, block3 ;; ;; block2: -;; v113 = iconst.i32 15 -;; v114 = iadd.i32 v11, v113 ; v113 = 15 -;; v117 = iconst.i32 -16 -;; v118 = band v114, v117 ; v117 = -16 -;; v120 = iadd.i32 v13, v118 -;; @001f store notrap aligned region0 v120, v12 -;; v136 = iconst.i32 -1476395002 -;; v137 = load.i64 notrap aligned readonly can_move v0+8 -;; v138 = load.i64 notrap aligned readonly can_move v137+32 -;; @001f v35 = iadd v138, v20 -;; @001f store notrap aligned v136, v35 ; v136 = -1476395002 -;; v139 = load.i64 notrap aligned readonly can_move v0+40 -;; v140 = load.i32 notrap aligned readonly can_move v139 -;; @001f store notrap aligned v140, v35+4 -;; v141 = band.i64 v18, v17 ; v17 = -16 -;; @001f istore32 notrap aligned v141, v35+8 -;; @001f jump block4(v13, v35) +;; v108 = iconst.i32 15 +;; v109 = iadd.i32 v11, v108 ; v108 = 15 +;; v112 = iconst.i32 -16 +;; v113 = band v109, v112 ; v112 = -16 +;; v115 = iadd.i32 v13, v113 +;; @001f store notrap aligned region0 v115, v12 +;; v131 = iconst.i32 -1476395002 +;; v132 = load.i64 notrap aligned readonly can_move v0+8 +;; v133 = load.i64 notrap aligned readonly can_move v132+32 +;; @001f v37 = iadd v133, v20 +;; @001f store notrap aligned v131, v37 ; v131 = -1476395002 +;; v134 = load.i64 notrap aligned readonly can_move v0+40 +;; v135 = load.i32 notrap aligned readonly can_move v134 +;; @001f store notrap aligned v135, v37+4 +;; v136 = band.i64 v18, v17 ; v17 = -16 +;; @001f istore32 notrap aligned v136, v37+8 +;; @001f jump block4(v13, v37) ;; ;; block3 cold: ;; @001f v24 = iconst.i32 -1476395002 @@ -76,40 +76,40 @@ ;; @001f v26 = load.i32 notrap aligned readonly can_move v25 ;; @001f v27 = iconst.i32 16 ;; @001f v28 = call fn0(v0, v24, v26, v11, v27) ; v24 = -1476395002, v27 = 16 -;; @001f v93 = load.i64 notrap aligned readonly can_move v0+8 -;; @001f v29 = load.i64 notrap aligned readonly can_move v93+32 -;; @001f v30 = uextend.i64 v28 -;; @001f v31 = iadd v29, v30 -;; @001f jump block4(v28, v31) +;; @001f v29 = load.i64 notrap aligned readonly can_move v0+8 +;; @001f v30 = load.i64 notrap aligned readonly can_move v29+32 +;; @001f v31 = uextend.i64 v28 +;; @001f v32 = iadd v30, v31 +;; @001f jump block4(v28, v32) ;; -;; block4(v39: i32, v40: i64): -;; v84 = stack_addr.i64 ss0 -;; store notrap v39, v84 -;; @001f v41 = iconst.i64 16 -;; @001f v42 = iadd v40, v41 ; v41 = 16 -;; @001f store.i32 user2 region1 v2, v42 -;; @001f trapz v39, user16 -;; v142 = load.i64 notrap aligned readonly can_move v0+8 -;; v143 = load.i64 notrap aligned readonly can_move v142+32 -;; @001f v45 = uextend.i64 v39 -;; @001f v47 = iadd v143, v45 -;; @001f v49 = iadd v47, v41 ; v41 = 16 -;; @001f v50 = load.i32 user2 readonly region1 v49 -;; @001f v51 = uextend.i64 v50 -;; @001f v57 = icmp.i64 ugt v5, v51 -;; @001f trapnz v57, user17 -;; @001f v71 = load.i64 notrap aligned v142+40 -;; @001f v61 = iconst.i64 24 -;; @001f v62 = iadd v47, v61 ; v61 = 24 -;; @001f v73 = uadd_overflow_trap v62, v98, user2 -;; @001f v72 = iadd v143, v71 -;; @001f v74 = icmp ugt v73, v72 -;; @001f trapnz v74, user2 -;; @001f v44 = iconst.i32 0 -;; @001f call fn1(v0, v62, v44, v98), stack_map=[i32 @ ss0+0] ; v44 = 0 -;; v77 = load.i32 notrap v84 +;; block4(v41: i32, v42: i64): +;; v89 = stack_addr.i64 ss0 +;; store notrap v41, v89 +;; @001f v43 = iconst.i64 16 +;; @001f v44 = iadd v42, v43 ; v43 = 16 +;; @001f store.i32 user2 region1 v2, v44 +;; @001f trapz v41, user16 +;; v137 = load.i64 notrap aligned readonly can_move v0+8 +;; v138 = load.i64 notrap aligned readonly can_move v137+32 +;; @001f v47 = uextend.i64 v41 +;; @001f v49 = iadd v138, v47 +;; @001f v51 = iadd v49, v43 ; v43 = 16 +;; @001f v52 = load.i32 user2 readonly region1 v51 +;; @001f v53 = uextend.i64 v52 +;; @001f v59 = icmp.i64 ugt v5, v53 +;; @001f trapnz v59, user17 +;; @001f v76 = load.i64 notrap aligned v137+40 +;; @001f v64 = iconst.i64 24 +;; @001f v65 = iadd v49, v64 ; v64 = 24 +;; @001f v78 = uadd_overflow_trap v65, v93, user2 +;; @001f v77 = iadd v138, v76 +;; @001f v79 = icmp ugt v78, v77 +;; @001f trapnz v79, user2 +;; @001f v46 = iconst.i32 0 +;; @001f call fn1(v0, v65, v46, v93), stack_map=[i32 @ ss0+0] ; v46 = 0 +;; v82 = load.i32 notrap v89 ;; @0022 jump block1 ;; ;; block1: -;; @0022 return v77 +;; @0022 return v82 ;; } diff --git a/tests/disas/gc/array-new-default-funcref.wat b/tests/disas/gc/array-new-default-funcref.wat index f2015caa90b0..03661bed8082 100644 --- a/tests/disas/gc/array-new-default-funcref.wat +++ b/tests/disas/gc/array-new-default-funcref.wat @@ -28,15 +28,15 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32): ;; @001f v5 = uextend.i64 v2 -;; v105 = iconst.i64 2 -;; v106 = ishl v5, v105 ; v105 = 2 +;; v100 = iconst.i64 2 +;; v101 = ishl v5, v100 ; v100 = 2 ;; @001f v8 = iconst.i64 32 -;; @001f v9 = ushr v106, v8 ; v8 = 32 +;; @001f v9 = ushr v101, v8 ; v8 = 32 ;; @001f trapnz v9, user18 ;; @001f v4 = iconst.i32 20 -;; v112 = iconst.i32 2 -;; v113 = ishl v2, v112 ; v112 = 2 -;; @001f v11 = uadd_overflow_trap v4, v113, user18 ; v4 = 20 +;; v107 = iconst.i32 2 +;; v108 = ishl v2, v107 ; v107 = 2 +;; @001f v11 = uadd_overflow_trap v4, v108, user18 ; v4 = 20 ;; @001f v12 = load.i64 notrap aligned readonly can_move v0+32 ;; @001f v13 = load.i32 notrap aligned v12 ;; @001f v14 = load.i32 notrap aligned v12+4 @@ -52,23 +52,23 @@ ;; @001f brif v23, block2, block3 ;; ;; block2: -;; v121 = iconst.i32 15 -;; v122 = iadd.i32 v11, v121 ; v121 = 15 -;; v125 = iconst.i32 -16 -;; v126 = band v122, v125 ; v125 = -16 -;; v128 = iadd.i32 v13, v126 -;; @001f store notrap aligned region0 v128, v12 -;; v143 = iconst.i32 -1476395002 -;; v144 = load.i64 notrap aligned readonly can_move v0+8 -;; v145 = load.i64 notrap aligned readonly can_move v144+32 -;; @001f v35 = iadd v145, v20 -;; @001f store notrap aligned v143, v35 ; v143 = -1476395002 -;; v146 = load.i64 notrap aligned readonly can_move v0+40 -;; v147 = load.i32 notrap aligned readonly can_move v146 -;; @001f store notrap aligned v147, v35+4 -;; v148 = band.i64 v18, v17 ; v17 = -16 -;; @001f istore32 notrap aligned v148, v35+8 -;; @001f jump block4(v13, v35) +;; v116 = iconst.i32 15 +;; v117 = iadd.i32 v11, v116 ; v116 = 15 +;; v120 = iconst.i32 -16 +;; v121 = band v117, v120 ; v120 = -16 +;; v123 = iadd.i32 v13, v121 +;; @001f store notrap aligned region0 v123, v12 +;; v138 = iconst.i32 -1476395002 +;; v139 = load.i64 notrap aligned readonly can_move v0+8 +;; v140 = load.i64 notrap aligned readonly can_move v139+32 +;; @001f v37 = iadd v140, v20 +;; @001f store notrap aligned v138, v37 ; v138 = -1476395002 +;; v141 = load.i64 notrap aligned readonly can_move v0+40 +;; v142 = load.i32 notrap aligned readonly can_move v141 +;; @001f store notrap aligned v142, v37+4 +;; v143 = band.i64 v18, v17 ; v17 = -16 +;; @001f istore32 notrap aligned v143, v37+8 +;; @001f jump block4(v13, v37) ;; ;; block3 cold: ;; @001f v24 = iconst.i32 -1476395002 @@ -76,54 +76,54 @@ ;; @001f v26 = load.i32 notrap aligned readonly can_move v25 ;; @001f v27 = iconst.i32 16 ;; @001f v28 = call fn0(v0, v24, v26, v11, v27) ; v24 = -1476395002, v27 = 16 -;; @001f v101 = load.i64 notrap aligned readonly can_move v0+8 -;; @001f v29 = load.i64 notrap aligned readonly can_move v101+32 -;; @001f v30 = uextend.i64 v28 -;; @001f v31 = iadd v29, v30 -;; @001f jump block4(v28, v31) +;; @001f v29 = load.i64 notrap aligned readonly can_move v0+8 +;; @001f v30 = load.i64 notrap aligned readonly can_move v29+32 +;; @001f v31 = uextend.i64 v28 +;; @001f v32 = iadd v30, v31 +;; @001f jump block4(v28, v32) ;; -;; block4(v39: i32, v40: i64): -;; v92 = stack_addr.i64 ss0 -;; store notrap v39, v92 -;; @001f v41 = iconst.i64 16 -;; @001f v42 = iadd v40, v41 ; v41 = 16 -;; @001f store.i32 user2 region1 v2, v42 -;; @001f trapz v39, user16 -;; v149 = load.i64 notrap aligned readonly can_move v0+8 -;; v150 = load.i64 notrap aligned readonly can_move v149+32 -;; @001f v45 = uextend.i64 v39 -;; @001f v47 = iadd v150, v45 -;; @001f v49 = iadd v47, v41 ; v41 = 16 -;; @001f v50 = load.i32 user2 readonly region1 v49 -;; @001f v51 = uextend.i64 v50 -;; @001f v57 = icmp.i64 ugt v5, v51 -;; @001f trapnz v57, user17 -;; @001f v71 = load.i64 notrap aligned v149+40 -;; @001f v61 = iconst.i64 20 -;; @001f v62 = iadd v47, v61 ; v61 = 20 -;; @001f v73 = uadd_overflow_trap v62, v106, user2 -;; @001f v72 = iadd v150, v71 -;; @001f v74 = icmp ugt v73, v72 -;; @001f trapnz v74, user2 -;; @001f v43 = iconst.i64 0 -;; @001f v75 = call fn1(v0, v43), stack_map=[i32 @ ss0+0] ; v43 = 0 -;; @001f v79 = icmp.i64 eq v5, v43 ; v43 = 0 -;; @001f v76 = ireduce.i32 v75 +;; block4(v41: i32, v42: i64): +;; v97 = stack_addr.i64 ss0 +;; store notrap v41, v97 +;; @001f v43 = iconst.i64 16 +;; @001f v44 = iadd v42, v43 ; v43 = 16 +;; @001f store.i32 user2 region1 v2, v44 +;; @001f trapz v41, user16 +;; v144 = load.i64 notrap aligned readonly can_move v0+8 +;; v145 = load.i64 notrap aligned readonly can_move v144+32 +;; @001f v47 = uextend.i64 v41 +;; @001f v49 = iadd v145, v47 +;; @001f v51 = iadd v49, v43 ; v43 = 16 +;; @001f v52 = load.i32 user2 readonly region1 v51 +;; @001f v53 = uextend.i64 v52 +;; @001f v59 = icmp.i64 ugt v5, v53 +;; @001f trapnz v59, user17 +;; @001f v76 = load.i64 notrap aligned v144+40 +;; @001f v64 = iconst.i64 20 +;; @001f v65 = iadd v49, v64 ; v64 = 20 +;; @001f v78 = uadd_overflow_trap v65, v101, user2 +;; @001f v77 = iadd v145, v76 +;; @001f v79 = icmp ugt v78, v77 +;; @001f trapnz v79, user2 +;; @001f v45 = iconst.i64 0 +;; @001f v80 = call fn1(v0, v45), stack_map=[i32 @ ss0+0] ; v45 = 0 +;; @001f v84 = icmp.i64 eq v5, v45 ; v45 = 0 +;; @001f v81 = ireduce.i32 v80 ;; @001f v6 = iconst.i64 4 -;; @001f v77 = iadd v62, v106 -;; @001f brif v79, block6, block5(v62) +;; @001f v82 = iadd v65, v101 +;; @001f brif v84, block6, block5(v65) ;; -;; block5(v80: i64): -;; @001f store.i32 notrap aligned little v76, v80 -;; v151 = iconst.i64 4 -;; v152 = iadd v80, v151 ; v151 = 4 -;; @001f v83 = icmp eq v152, v77 -;; @001f brif v83, block6, block5(v152) +;; block5(v85: i64): +;; @001f store.i32 notrap aligned little v81, v85 +;; v146 = iconst.i64 4 +;; v147 = iadd v85, v146 ; v146 = 4 +;; @001f v88 = icmp eq v147, v82 +;; @001f brif v88, block6, block5(v147) ;; ;; block6: -;; v85 = load.i32 notrap v92 +;; v90 = load.i32 notrap v97 ;; @0022 jump block1 ;; ;; block1: -;; @0022 return v85 +;; @0022 return v90 ;; } diff --git a/tests/disas/gc/array-new-default-i16.wat b/tests/disas/gc/array-new-default-i16.wat index 99e395d7d27a..c536ff65b825 100644 --- a/tests/disas/gc/array-new-default-i16.wat +++ b/tests/disas/gc/array-new-default-i16.wat @@ -28,14 +28,14 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32): ;; @001f v5 = uextend.i64 v2 -;; v98 = iconst.i64 1 -;; v99 = ishl v5, v98 ; v98 = 1 +;; v93 = iconst.i64 1 +;; v94 = ishl v5, v93 ; v93 = 1 ;; @001f v8 = iconst.i64 32 -;; @001f v9 = ushr v99, v8 ; v8 = 32 +;; @001f v9 = ushr v94, v8 ; v8 = 32 ;; @001f trapnz v9, user18 ;; @001f v4 = iconst.i32 20 -;; v103 = iadd v2, v2 -;; @001f v11 = uadd_overflow_trap v4, v103, user18 ; v4 = 20 +;; v98 = iadd v2, v2 +;; @001f v11 = uadd_overflow_trap v4, v98, user18 ; v4 = 20 ;; @001f v12 = load.i64 notrap aligned readonly can_move v0+32 ;; @001f v13 = load.i32 notrap aligned v12 ;; @001f v14 = load.i32 notrap aligned v12+4 @@ -51,23 +51,23 @@ ;; @001f brif v23, block2, block3 ;; ;; block2: -;; v118 = iconst.i32 15 -;; v119 = iadd.i32 v11, v118 ; v118 = 15 -;; v122 = iconst.i32 -16 -;; v123 = band v119, v122 ; v122 = -16 -;; v125 = iadd.i32 v13, v123 -;; @001f store notrap aligned region0 v125, v12 -;; v146 = iconst.i32 -1476395002 -;; v147 = load.i64 notrap aligned readonly can_move v0+8 -;; v148 = load.i64 notrap aligned readonly can_move v147+32 -;; @001f v35 = iadd v148, v20 -;; @001f store notrap aligned v146, v35 ; v146 = -1476395002 -;; v149 = load.i64 notrap aligned readonly can_move v0+40 -;; v150 = load.i32 notrap aligned readonly can_move v149 -;; @001f store notrap aligned v150, v35+4 -;; v151 = band.i64 v18, v17 ; v17 = -16 -;; @001f istore32 notrap aligned v151, v35+8 -;; @001f jump block4(v13, v35) +;; v113 = iconst.i32 15 +;; v114 = iadd.i32 v11, v113 ; v113 = 15 +;; v117 = iconst.i32 -16 +;; v118 = band v114, v117 ; v117 = -16 +;; v120 = iadd.i32 v13, v118 +;; @001f store notrap aligned region0 v120, v12 +;; v141 = iconst.i32 -1476395002 +;; v142 = load.i64 notrap aligned readonly can_move v0+8 +;; v143 = load.i64 notrap aligned readonly can_move v142+32 +;; @001f v37 = iadd v143, v20 +;; @001f store notrap aligned v141, v37 ; v141 = -1476395002 +;; v144 = load.i64 notrap aligned readonly can_move v0+40 +;; v145 = load.i32 notrap aligned readonly can_move v144 +;; @001f store notrap aligned v145, v37+4 +;; v146 = band.i64 v18, v17 ; v17 = -16 +;; @001f istore32 notrap aligned v146, v37+8 +;; @001f jump block4(v13, v37) ;; ;; block3 cold: ;; @001f v24 = iconst.i32 -1476395002 @@ -75,40 +75,40 @@ ;; @001f v26 = load.i32 notrap aligned readonly can_move v25 ;; @001f v27 = iconst.i32 16 ;; @001f v28 = call fn0(v0, v24, v26, v11, v27) ; v24 = -1476395002, v27 = 16 -;; @001f v93 = load.i64 notrap aligned readonly can_move v0+8 -;; @001f v29 = load.i64 notrap aligned readonly can_move v93+32 -;; @001f v30 = uextend.i64 v28 -;; @001f v31 = iadd v29, v30 -;; @001f jump block4(v28, v31) +;; @001f v29 = load.i64 notrap aligned readonly can_move v0+8 +;; @001f v30 = load.i64 notrap aligned readonly can_move v29+32 +;; @001f v31 = uextend.i64 v28 +;; @001f v32 = iadd v30, v31 +;; @001f jump block4(v28, v32) ;; -;; block4(v39: i32, v40: i64): -;; v84 = stack_addr.i64 ss0 -;; store notrap v39, v84 -;; @001f v41 = iconst.i64 16 -;; @001f v42 = iadd v40, v41 ; v41 = 16 -;; @001f store.i32 user2 region1 v2, v42 -;; @001f trapz v39, user16 -;; v152 = load.i64 notrap aligned readonly can_move v0+8 -;; v153 = load.i64 notrap aligned readonly can_move v152+32 -;; @001f v45 = uextend.i64 v39 -;; @001f v47 = iadd v153, v45 -;; @001f v49 = iadd v47, v41 ; v41 = 16 -;; @001f v50 = load.i32 user2 readonly region1 v49 -;; @001f v51 = uextend.i64 v50 -;; @001f v57 = icmp.i64 ugt v5, v51 -;; @001f trapnz v57, user17 -;; @001f v71 = load.i64 notrap aligned v152+40 -;; @001f v61 = iconst.i64 20 -;; @001f v62 = iadd v47, v61 ; v61 = 20 -;; @001f v73 = uadd_overflow_trap v62, v99, user2 -;; @001f v72 = iadd v153, v71 -;; @001f v74 = icmp ugt v73, v72 -;; @001f trapnz v74, user2 -;; @001f v43 = iconst.i32 0 -;; @001f call fn1(v0, v62, v43, v99), stack_map=[i32 @ ss0+0] ; v43 = 0 -;; v77 = load.i32 notrap v84 +;; block4(v41: i32, v42: i64): +;; v89 = stack_addr.i64 ss0 +;; store notrap v41, v89 +;; @001f v43 = iconst.i64 16 +;; @001f v44 = iadd v42, v43 ; v43 = 16 +;; @001f store.i32 user2 region1 v2, v44 +;; @001f trapz v41, user16 +;; v147 = load.i64 notrap aligned readonly can_move v0+8 +;; v148 = load.i64 notrap aligned readonly can_move v147+32 +;; @001f v47 = uextend.i64 v41 +;; @001f v49 = iadd v148, v47 +;; @001f v51 = iadd v49, v43 ; v43 = 16 +;; @001f v52 = load.i32 user2 readonly region1 v51 +;; @001f v53 = uextend.i64 v52 +;; @001f v59 = icmp.i64 ugt v5, v53 +;; @001f trapnz v59, user17 +;; @001f v76 = load.i64 notrap aligned v147+40 +;; @001f v64 = iconst.i64 20 +;; @001f v65 = iadd v49, v64 ; v64 = 20 +;; @001f v78 = uadd_overflow_trap v65, v94, user2 +;; @001f v77 = iadd v148, v76 +;; @001f v79 = icmp ugt v78, v77 +;; @001f trapnz v79, user2 +;; @001f v45 = iconst.i32 0 +;; @001f call fn1(v0, v65, v45, v94), stack_map=[i32 @ ss0+0] ; v45 = 0 +;; v82 = load.i32 notrap v89 ;; @0022 jump block1 ;; ;; block1: -;; @0022 return v77 +;; @0022 return v82 ;; } diff --git a/tests/disas/gc/array-new-default-i32.wat b/tests/disas/gc/array-new-default-i32.wat index 5a25f42df7f1..3afd60e7e384 100644 --- a/tests/disas/gc/array-new-default-i32.wat +++ b/tests/disas/gc/array-new-default-i32.wat @@ -28,15 +28,15 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32): ;; @001f v5 = uextend.i64 v2 -;; v97 = iconst.i64 2 -;; v98 = ishl v5, v97 ; v97 = 2 +;; v92 = iconst.i64 2 +;; v93 = ishl v5, v92 ; v92 = 2 ;; @001f v8 = iconst.i64 32 -;; @001f v9 = ushr v98, v8 ; v8 = 32 +;; @001f v9 = ushr v93, v8 ; v8 = 32 ;; @001f trapnz v9, user18 ;; @001f v4 = iconst.i32 20 -;; v104 = iconst.i32 2 -;; v105 = ishl v2, v104 ; v104 = 2 -;; @001f v11 = uadd_overflow_trap v4, v105, user18 ; v4 = 20 +;; v99 = iconst.i32 2 +;; v100 = ishl v2, v99 ; v99 = 2 +;; @001f v11 = uadd_overflow_trap v4, v100, user18 ; v4 = 20 ;; @001f v12 = load.i64 notrap aligned readonly can_move v0+32 ;; @001f v13 = load.i32 notrap aligned v12 ;; @001f v14 = load.i32 notrap aligned v12+4 @@ -52,23 +52,23 @@ ;; @001f brif v23, block2, block3 ;; ;; block2: -;; v113 = iconst.i32 15 -;; v114 = iadd.i32 v11, v113 ; v113 = 15 -;; v117 = iconst.i32 -16 -;; v118 = band v114, v117 ; v117 = -16 -;; v120 = iadd.i32 v13, v118 -;; @001f store notrap aligned region0 v120, v12 -;; v136 = iconst.i32 -1476395002 -;; v137 = load.i64 notrap aligned readonly can_move v0+8 -;; v138 = load.i64 notrap aligned readonly can_move v137+32 -;; @001f v35 = iadd v138, v20 -;; @001f store notrap aligned v136, v35 ; v136 = -1476395002 -;; v139 = load.i64 notrap aligned readonly can_move v0+40 -;; v140 = load.i32 notrap aligned readonly can_move v139 -;; @001f store notrap aligned v140, v35+4 -;; v141 = band.i64 v18, v17 ; v17 = -16 -;; @001f istore32 notrap aligned v141, v35+8 -;; @001f jump block4(v13, v35) +;; v108 = iconst.i32 15 +;; v109 = iadd.i32 v11, v108 ; v108 = 15 +;; v112 = iconst.i32 -16 +;; v113 = band v109, v112 ; v112 = -16 +;; v115 = iadd.i32 v13, v113 +;; @001f store notrap aligned region0 v115, v12 +;; v131 = iconst.i32 -1476395002 +;; v132 = load.i64 notrap aligned readonly can_move v0+8 +;; v133 = load.i64 notrap aligned readonly can_move v132+32 +;; @001f v37 = iadd v133, v20 +;; @001f store notrap aligned v131, v37 ; v131 = -1476395002 +;; v134 = load.i64 notrap aligned readonly can_move v0+40 +;; v135 = load.i32 notrap aligned readonly can_move v134 +;; @001f store notrap aligned v135, v37+4 +;; v136 = band.i64 v18, v17 ; v17 = -16 +;; @001f istore32 notrap aligned v136, v37+8 +;; @001f jump block4(v13, v37) ;; ;; block3 cold: ;; @001f v24 = iconst.i32 -1476395002 @@ -76,40 +76,40 @@ ;; @001f v26 = load.i32 notrap aligned readonly can_move v25 ;; @001f v27 = iconst.i32 16 ;; @001f v28 = call fn0(v0, v24, v26, v11, v27) ; v24 = -1476395002, v27 = 16 -;; @001f v93 = load.i64 notrap aligned readonly can_move v0+8 -;; @001f v29 = load.i64 notrap aligned readonly can_move v93+32 -;; @001f v30 = uextend.i64 v28 -;; @001f v31 = iadd v29, v30 -;; @001f jump block4(v28, v31) +;; @001f v29 = load.i64 notrap aligned readonly can_move v0+8 +;; @001f v30 = load.i64 notrap aligned readonly can_move v29+32 +;; @001f v31 = uextend.i64 v28 +;; @001f v32 = iadd v30, v31 +;; @001f jump block4(v28, v32) ;; -;; block4(v39: i32, v40: i64): -;; v84 = stack_addr.i64 ss0 -;; store notrap v39, v84 -;; @001f v41 = iconst.i64 16 -;; @001f v42 = iadd v40, v41 ; v41 = 16 -;; @001f store.i32 user2 region1 v2, v42 -;; @001f trapz v39, user16 -;; v142 = load.i64 notrap aligned readonly can_move v0+8 -;; v143 = load.i64 notrap aligned readonly can_move v142+32 -;; @001f v45 = uextend.i64 v39 -;; @001f v47 = iadd v143, v45 -;; @001f v49 = iadd v47, v41 ; v41 = 16 -;; @001f v50 = load.i32 user2 readonly region1 v49 -;; @001f v51 = uextend.i64 v50 -;; @001f v57 = icmp.i64 ugt v5, v51 -;; @001f trapnz v57, user17 -;; @001f v71 = load.i64 notrap aligned v142+40 -;; @001f v61 = iconst.i64 20 -;; @001f v62 = iadd v47, v61 ; v61 = 20 -;; @001f v73 = uadd_overflow_trap v62, v98, user2 -;; @001f v72 = iadd v143, v71 -;; @001f v74 = icmp ugt v73, v72 -;; @001f trapnz v74, user2 -;; @001f v43 = iconst.i32 0 -;; @001f call fn1(v0, v62, v43, v98), stack_map=[i32 @ ss0+0] ; v43 = 0 -;; v77 = load.i32 notrap v84 +;; block4(v41: i32, v42: i64): +;; v89 = stack_addr.i64 ss0 +;; store notrap v41, v89 +;; @001f v43 = iconst.i64 16 +;; @001f v44 = iadd v42, v43 ; v43 = 16 +;; @001f store.i32 user2 region1 v2, v44 +;; @001f trapz v41, user16 +;; v137 = load.i64 notrap aligned readonly can_move v0+8 +;; v138 = load.i64 notrap aligned readonly can_move v137+32 +;; @001f v47 = uextend.i64 v41 +;; @001f v49 = iadd v138, v47 +;; @001f v51 = iadd v49, v43 ; v43 = 16 +;; @001f v52 = load.i32 user2 readonly region1 v51 +;; @001f v53 = uextend.i64 v52 +;; @001f v59 = icmp.i64 ugt v5, v53 +;; @001f trapnz v59, user17 +;; @001f v76 = load.i64 notrap aligned v137+40 +;; @001f v64 = iconst.i64 20 +;; @001f v65 = iadd v49, v64 ; v64 = 20 +;; @001f v78 = uadd_overflow_trap v65, v93, user2 +;; @001f v77 = iadd v138, v76 +;; @001f v79 = icmp ugt v78, v77 +;; @001f trapnz v79, user2 +;; @001f v45 = iconst.i32 0 +;; @001f call fn1(v0, v65, v45, v93), stack_map=[i32 @ ss0+0] ; v45 = 0 +;; v82 = load.i32 notrap v89 ;; @0022 jump block1 ;; ;; block1: -;; @0022 return v77 +;; @0022 return v82 ;; } diff --git a/tests/disas/gc/array-new-default-i64.wat b/tests/disas/gc/array-new-default-i64.wat index 1c2afb2d8db7..71c1f307cf91 100644 --- a/tests/disas/gc/array-new-default-i64.wat +++ b/tests/disas/gc/array-new-default-i64.wat @@ -28,15 +28,15 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32): ;; @001f v5 = uextend.i64 v2 -;; v97 = iconst.i64 3 -;; v98 = ishl v5, v97 ; v97 = 3 +;; v92 = iconst.i64 3 +;; v93 = ishl v5, v92 ; v92 = 3 ;; @001f v8 = iconst.i64 32 -;; @001f v9 = ushr v98, v8 ; v8 = 32 +;; @001f v9 = ushr v93, v8 ; v8 = 32 ;; @001f trapnz v9, user18 ;; @001f v4 = iconst.i32 24 -;; v104 = iconst.i32 3 -;; v105 = ishl v2, v104 ; v104 = 3 -;; @001f v11 = uadd_overflow_trap v4, v105, user18 ; v4 = 24 +;; v99 = iconst.i32 3 +;; v100 = ishl v2, v99 ; v99 = 3 +;; @001f v11 = uadd_overflow_trap v4, v100, user18 ; v4 = 24 ;; @001f v12 = load.i64 notrap aligned readonly can_move v0+32 ;; @001f v13 = load.i32 notrap aligned v12 ;; @001f v14 = load.i32 notrap aligned v12+4 @@ -52,23 +52,23 @@ ;; @001f brif v23, block2, block3 ;; ;; block2: -;; v113 = iconst.i32 15 -;; v114 = iadd.i32 v11, v113 ; v113 = 15 -;; v117 = iconst.i32 -16 -;; v118 = band v114, v117 ; v117 = -16 -;; v120 = iadd.i32 v13, v118 -;; @001f store notrap aligned region0 v120, v12 -;; v135 = iconst.i32 -1476395002 -;; v136 = load.i64 notrap aligned readonly can_move v0+8 -;; v137 = load.i64 notrap aligned readonly can_move v136+32 -;; @001f v35 = iadd v137, v20 -;; @001f store notrap aligned v135, v35 ; v135 = -1476395002 -;; v138 = load.i64 notrap aligned readonly can_move v0+40 -;; v139 = load.i32 notrap aligned readonly can_move v138 -;; @001f store notrap aligned v139, v35+4 -;; v140 = band.i64 v18, v17 ; v17 = -16 -;; @001f istore32 notrap aligned v140, v35+8 -;; @001f jump block4(v13, v35) +;; v108 = iconst.i32 15 +;; v109 = iadd.i32 v11, v108 ; v108 = 15 +;; v112 = iconst.i32 -16 +;; v113 = band v109, v112 ; v112 = -16 +;; v115 = iadd.i32 v13, v113 +;; @001f store notrap aligned region0 v115, v12 +;; v130 = iconst.i32 -1476395002 +;; v131 = load.i64 notrap aligned readonly can_move v0+8 +;; v132 = load.i64 notrap aligned readonly can_move v131+32 +;; @001f v37 = iadd v132, v20 +;; @001f store notrap aligned v130, v37 ; v130 = -1476395002 +;; v133 = load.i64 notrap aligned readonly can_move v0+40 +;; v134 = load.i32 notrap aligned readonly can_move v133 +;; @001f store notrap aligned v134, v37+4 +;; v135 = band.i64 v18, v17 ; v17 = -16 +;; @001f istore32 notrap aligned v135, v37+8 +;; @001f jump block4(v13, v37) ;; ;; block3 cold: ;; @001f v24 = iconst.i32 -1476395002 @@ -76,40 +76,40 @@ ;; @001f v26 = load.i32 notrap aligned readonly can_move v25 ;; @001f v27 = iconst.i32 16 ;; @001f v28 = call fn0(v0, v24, v26, v11, v27) ; v24 = -1476395002, v27 = 16 -;; @001f v93 = load.i64 notrap aligned readonly can_move v0+8 -;; @001f v29 = load.i64 notrap aligned readonly can_move v93+32 -;; @001f v30 = uextend.i64 v28 -;; @001f v31 = iadd v29, v30 -;; @001f jump block4(v28, v31) +;; @001f v29 = load.i64 notrap aligned readonly can_move v0+8 +;; @001f v30 = load.i64 notrap aligned readonly can_move v29+32 +;; @001f v31 = uextend.i64 v28 +;; @001f v32 = iadd v30, v31 +;; @001f jump block4(v28, v32) ;; -;; block4(v39: i32, v40: i64): -;; v84 = stack_addr.i64 ss0 -;; store notrap v39, v84 -;; @001f v41 = iconst.i64 16 -;; @001f v42 = iadd v40, v41 ; v41 = 16 -;; @001f store.i32 user2 region1 v2, v42 -;; @001f trapz v39, user16 -;; v141 = load.i64 notrap aligned readonly can_move v0+8 -;; v142 = load.i64 notrap aligned readonly can_move v141+32 -;; @001f v45 = uextend.i64 v39 -;; @001f v47 = iadd v142, v45 -;; @001f v49 = iadd v47, v41 ; v41 = 16 -;; @001f v50 = load.i32 user2 readonly region1 v49 -;; @001f v51 = uextend.i64 v50 -;; @001f v57 = icmp.i64 ugt v5, v51 -;; @001f trapnz v57, user17 -;; @001f v71 = load.i64 notrap aligned v141+40 -;; @001f v61 = iconst.i64 24 -;; @001f v62 = iadd v47, v61 ; v61 = 24 -;; @001f v73 = uadd_overflow_trap v62, v98, user2 -;; @001f v72 = iadd v142, v71 -;; @001f v74 = icmp ugt v73, v72 -;; @001f trapnz v74, user2 -;; @001f v44 = iconst.i32 0 -;; @001f call fn1(v0, v62, v44, v98), stack_map=[i32 @ ss0+0] ; v44 = 0 -;; v77 = load.i32 notrap v84 +;; block4(v41: i32, v42: i64): +;; v89 = stack_addr.i64 ss0 +;; store notrap v41, v89 +;; @001f v43 = iconst.i64 16 +;; @001f v44 = iadd v42, v43 ; v43 = 16 +;; @001f store.i32 user2 region1 v2, v44 +;; @001f trapz v41, user16 +;; v136 = load.i64 notrap aligned readonly can_move v0+8 +;; v137 = load.i64 notrap aligned readonly can_move v136+32 +;; @001f v47 = uextend.i64 v41 +;; @001f v49 = iadd v137, v47 +;; @001f v51 = iadd v49, v43 ; v43 = 16 +;; @001f v52 = load.i32 user2 readonly region1 v51 +;; @001f v53 = uextend.i64 v52 +;; @001f v59 = icmp.i64 ugt v5, v53 +;; @001f trapnz v59, user17 +;; @001f v76 = load.i64 notrap aligned v136+40 +;; @001f v64 = iconst.i64 24 +;; @001f v65 = iadd v49, v64 ; v64 = 24 +;; @001f v78 = uadd_overflow_trap v65, v93, user2 +;; @001f v77 = iadd v137, v76 +;; @001f v79 = icmp ugt v78, v77 +;; @001f trapnz v79, user2 +;; @001f v46 = iconst.i32 0 +;; @001f call fn1(v0, v65, v46, v93), stack_map=[i32 @ ss0+0] ; v46 = 0 +;; v82 = load.i32 notrap v89 ;; @0022 jump block1 ;; ;; block1: -;; @0022 return v77 +;; @0022 return v82 ;; } diff --git a/tests/disas/gc/array-new-default-i8.wat b/tests/disas/gc/array-new-default-i8.wat index 33156c2d9596..bfdfcb7be4b6 100644 --- a/tests/disas/gc/array-new-default-i8.wat +++ b/tests/disas/gc/array-new-default-i8.wat @@ -48,23 +48,23 @@ ;; @001f brif v23, block2, block3 ;; ;; block2: -;; v103 = iconst.i32 15 -;; v104 = iadd.i32 v11, v103 ; v103 = 15 -;; v107 = iconst.i32 -16 -;; v108 = band v104, v107 ; v107 = -16 -;; v110 = iadd.i32 v13, v108 -;; @001f store notrap aligned region0 v110, v12 -;; v124 = iconst.i32 -1476395002 -;; v125 = load.i64 notrap aligned readonly can_move v0+8 -;; v126 = load.i64 notrap aligned readonly can_move v125+32 -;; @001f v35 = iadd v126, v20 -;; @001f store notrap aligned v124, v35 ; v124 = -1476395002 -;; v127 = load.i64 notrap aligned readonly can_move v0+40 -;; v128 = load.i32 notrap aligned readonly can_move v127 -;; @001f store notrap aligned v128, v35+4 -;; v129 = band.i64 v18, v17 ; v17 = -16 -;; @001f istore32 notrap aligned v129, v35+8 -;; @001f jump block4(v13, v35) +;; v98 = iconst.i32 15 +;; v99 = iadd.i32 v11, v98 ; v98 = 15 +;; v102 = iconst.i32 -16 +;; v103 = band v99, v102 ; v102 = -16 +;; v105 = iadd.i32 v13, v103 +;; @001f store notrap aligned region0 v105, v12 +;; v119 = iconst.i32 -1476395002 +;; v120 = load.i64 notrap aligned readonly can_move v0+8 +;; v121 = load.i64 notrap aligned readonly can_move v120+32 +;; @001f v37 = iadd v121, v20 +;; @001f store notrap aligned v119, v37 ; v119 = -1476395002 +;; v122 = load.i64 notrap aligned readonly can_move v0+40 +;; v123 = load.i32 notrap aligned readonly can_move v122 +;; @001f store notrap aligned v123, v37+4 +;; v124 = band.i64 v18, v17 ; v17 = -16 +;; @001f istore32 notrap aligned v124, v37+8 +;; @001f jump block4(v13, v37) ;; ;; block3 cold: ;; @001f v24 = iconst.i32 -1476395002 @@ -72,40 +72,40 @@ ;; @001f v26 = load.i32 notrap aligned readonly can_move v25 ;; @001f v27 = iconst.i32 16 ;; @001f v28 = call fn0(v0, v24, v26, v11, v27) ; v24 = -1476395002, v27 = 16 -;; @001f v92 = load.i64 notrap aligned readonly can_move v0+8 -;; @001f v29 = load.i64 notrap aligned readonly can_move v92+32 -;; @001f v30 = uextend.i64 v28 -;; @001f v31 = iadd v29, v30 -;; @001f jump block4(v28, v31) +;; @001f v29 = load.i64 notrap aligned readonly can_move v0+8 +;; @001f v30 = load.i64 notrap aligned readonly can_move v29+32 +;; @001f v31 = uextend.i64 v28 +;; @001f v32 = iadd v30, v31 +;; @001f jump block4(v28, v32) ;; -;; block4(v39: i32, v40: i64): -;; v83 = stack_addr.i64 ss0 -;; store notrap v39, v83 -;; @001f v41 = iconst.i64 16 -;; @001f v42 = iadd v40, v41 ; v41 = 16 -;; @001f store.i32 user2 region1 v2, v42 -;; @001f trapz v39, user16 -;; v130 = load.i64 notrap aligned readonly can_move v0+8 -;; v131 = load.i64 notrap aligned readonly can_move v130+32 -;; @001f v45 = uextend.i64 v39 -;; @001f v47 = iadd v131, v45 -;; @001f v49 = iadd v47, v41 ; v41 = 16 -;; @001f v50 = load.i32 user2 readonly region1 v49 -;; @001f v51 = uextend.i64 v50 -;; @001f v57 = icmp.i64 ugt v5, v51 -;; @001f trapnz v57, user17 -;; @001f v71 = load.i64 notrap aligned v130+40 -;; @001f v61 = iconst.i64 20 -;; @001f v62 = iadd v47, v61 ; v61 = 20 -;; @001f v73 = uadd_overflow_trap v62, v5, user2 -;; @001f v72 = iadd v131, v71 -;; @001f v74 = icmp ugt v73, v72 -;; @001f trapnz v74, user2 -;; @001f v43 = iconst.i32 0 -;; @001f call fn1(v0, v62, v43, v5), stack_map=[i32 @ ss0+0] ; v43 = 0 -;; v76 = load.i32 notrap v83 +;; block4(v41: i32, v42: i64): +;; v88 = stack_addr.i64 ss0 +;; store notrap v41, v88 +;; @001f v43 = iconst.i64 16 +;; @001f v44 = iadd v42, v43 ; v43 = 16 +;; @001f store.i32 user2 region1 v2, v44 +;; @001f trapz v41, user16 +;; v125 = load.i64 notrap aligned readonly can_move v0+8 +;; v126 = load.i64 notrap aligned readonly can_move v125+32 +;; @001f v47 = uextend.i64 v41 +;; @001f v49 = iadd v126, v47 +;; @001f v51 = iadd v49, v43 ; v43 = 16 +;; @001f v52 = load.i32 user2 readonly region1 v51 +;; @001f v53 = uextend.i64 v52 +;; @001f v59 = icmp.i64 ugt v5, v53 +;; @001f trapnz v59, user17 +;; @001f v76 = load.i64 notrap aligned v125+40 +;; @001f v64 = iconst.i64 20 +;; @001f v65 = iadd v49, v64 ; v64 = 20 +;; @001f v78 = uadd_overflow_trap v65, v5, user2 +;; @001f v77 = iadd v126, v76 +;; @001f v79 = icmp ugt v78, v77 +;; @001f trapnz v79, user2 +;; @001f v45 = iconst.i32 0 +;; @001f call fn1(v0, v65, v45, v5), stack_map=[i32 @ ss0+0] ; v45 = 0 +;; v81 = load.i32 notrap v88 ;; @0022 jump block1 ;; ;; block1: -;; @0022 return v76 +;; @0022 return v81 ;; } diff --git a/tests/disas/gc/copying/array-fill.wat b/tests/disas/gc/copying/array-fill.wat index 0410e10c3c59..a3de06a49155 100644 --- a/tests/disas/gc/copying/array-fill.wat +++ b/tests/disas/gc/copying/array-fill.wat @@ -21,8 +21,8 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32, v4: i64, v5: i32): ;; @0027 trapz v2, user16 -;; @0027 v49 = load.i64 notrap aligned readonly can_move v0+8 -;; @0027 v7 = load.i64 notrap aligned readonly can_move v49+32 +;; @0027 v46 = load.i64 notrap aligned readonly can_move v0+8 +;; @0027 v7 = load.i64 notrap aligned readonly can_move v46+32 ;; @0027 v6 = uextend.i64 v2 ;; @0027 v8 = iadd v7, v6 ;; @0027 v9 = iconst.i64 16 @@ -34,29 +34,29 @@ ;; @0027 v12 = uextend.i64 v11 ;; @0027 v18 = icmp ugt v17, v12 ;; @0027 trapnz v18, user17 -;; @0027 v32 = load.i64 notrap aligned v49+40 -;; @0027 v22 = iconst.i64 24 -;; @0027 v23 = iadd v8, v22 ; v22 = 24 -;; v53 = iconst.i64 3 -;; v54 = ishl v13, v53 ; v53 = 3 -;; @0027 v27 = iadd v23, v54 -;; v56 = ishl v14, v53 ; v53 = 3 -;; @0027 v34 = uadd_overflow_trap v27, v56, user2 -;; @0027 v33 = iadd v7, v32 -;; @0027 v35 = icmp ugt v34, v33 -;; @0027 trapnz v35, user2 -;; v51 = iconst.i64 0 -;; @0027 v38 = icmp eq v14, v51 ; v51 = 0 -;; @0027 v25 = iconst.i64 8 -;; @0027 v36 = iadd v27, v56 -;; @0027 brif v38, block3, block2(v27) +;; @0027 v35 = load.i64 notrap aligned v46+40 +;; @0027 v23 = iconst.i64 24 +;; @0027 v24 = iadd v8, v23 ; v23 = 24 +;; v50 = iconst.i64 3 +;; v51 = ishl v13, v50 ; v50 = 3 +;; @0027 v28 = iadd v24, v51 +;; v53 = ishl v14, v50 ; v50 = 3 +;; @0027 v37 = uadd_overflow_trap v28, v53, user2 +;; @0027 v36 = iadd v7, v35 +;; @0027 v38 = icmp ugt v37, v36 +;; @0027 trapnz v38, user2 +;; v48 = iconst.i64 0 +;; @0027 v41 = icmp eq v14, v48 ; v48 = 0 +;; @0027 v26 = iconst.i64 8 +;; @0027 v39 = iadd v28, v53 +;; @0027 brif v41, block3, block2(v28) ;; -;; block2(v39: i64): -;; @0027 store.i64 user2 little region0 v4, v39 -;; v58 = iconst.i64 8 -;; v59 = iadd v39, v58 ; v58 = 8 -;; @0027 v42 = icmp eq v59, v36 -;; @0027 brif v42, block3, block2(v59) +;; block2(v42: i64): +;; @0027 store.i64 user2 little region0 v4, v42 +;; v55 = iconst.i64 8 +;; v56 = iadd v42, v55 ; v55 = 8 +;; @0027 v45 = icmp eq v56, v39 +;; @0027 brif v45, block3, block2(v56) ;; ;; block3: ;; @002a jump block1 diff --git a/tests/disas/gc/copying/array-new-fixed-of-gc-refs.wat b/tests/disas/gc/copying/array-new-fixed-of-gc-refs.wat index c976fbdb91a8..ef175e1d4d44 100644 --- a/tests/disas/gc/copying/array-new-fixed-of-gc-refs.wat +++ b/tests/disas/gc/copying/array-new-fixed-of-gc-refs.wat @@ -26,12 +26,12 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32, v4: i32): -;; v130 = stack_addr.i64 ss2 -;; store notrap v2, v130 -;; v131 = stack_addr.i64 ss1 -;; store notrap v3, v131 -;; v132 = stack_addr.i64 ss0 -;; store notrap v4, v132 +;; v132 = stack_addr.i64 ss2 +;; store notrap v2, v132 +;; v133 = stack_addr.i64 ss1 +;; store notrap v3, v133 +;; v134 = stack_addr.i64 ss0 +;; store notrap v4, v134 ;; @0025 v15 = load.i64 notrap aligned readonly can_move v0+32 ;; @0025 v16 = load.i32 notrap aligned v15 ;; @0025 v17 = load.i32 notrap aligned v15+4 @@ -43,103 +43,103 @@ ;; @0025 brif v26, block2, block3 ;; ;; block2: -;; v268 = iconst.i32 32 -;; v174 = iadd.i32 v16, v268 ; v268 = 32 -;; @0025 store notrap aligned region0 v174, v15 -;; v269 = iconst.i32 -1476394994 -;; v270 = load.i64 notrap aligned readonly can_move v0+8 -;; v271 = load.i64 notrap aligned readonly can_move v270+32 -;; @0025 v38 = iadd v271, v23 -;; @0025 store notrap aligned v269, v38 ; v269 = -1476394994 -;; v272 = load.i64 notrap aligned readonly can_move v0+40 -;; v273 = load.i32 notrap aligned readonly can_move v272 -;; @0025 store notrap aligned v273, v38+4 -;; v274 = iconst.i64 32 -;; @0025 istore32 notrap aligned v274, v38+8 ; v274 = 32 -;; @0025 jump block4(v16, v38) +;; v266 = iconst.i32 32 +;; v172 = iadd.i32 v16, v266 ; v266 = 32 +;; @0025 store notrap aligned region0 v172, v15 +;; v267 = iconst.i32 -1476394994 +;; v268 = load.i64 notrap aligned readonly can_move v0+8 +;; v269 = load.i64 notrap aligned readonly can_move v268+32 +;; @0025 v40 = iadd v269, v23 +;; @0025 store notrap aligned v267, v40 ; v267 = -1476394994 +;; v270 = load.i64 notrap aligned readonly can_move v0+40 +;; v271 = load.i32 notrap aligned readonly can_move v270 +;; @0025 store notrap aligned v271, v40+4 +;; v272 = iconst.i64 32 +;; @0025 istore32 notrap aligned v272, v40+8 ; v272 = 32 +;; @0025 jump block4(v16, v40) ;; ;; block3 cold: ;; @0025 v27 = iconst.i32 -1476394994 ;; @0025 v28 = load.i64 notrap aligned readonly can_move v0+40 ;; @0025 v29 = load.i32 notrap aligned readonly can_move v28 -;; v160 = iconst.i32 32 +;; v158 = iconst.i32 32 ;; @0025 v30 = iconst.i32 16 -;; @0025 v31 = call fn0(v0, v27, v29, v160, v30), stack_map=[i32 @ ss2+0, i32 @ ss1+0, i32 @ ss0+0] ; v27 = -1476394994, v160 = 32, v30 = 16 -;; @0025 v145 = load.i64 notrap aligned readonly can_move v0+8 -;; @0025 v32 = load.i64 notrap aligned readonly can_move v145+32 -;; @0025 v33 = uextend.i64 v31 -;; @0025 v34 = iadd v32, v33 -;; @0025 jump block4(v31, v34) +;; @0025 v31 = call fn0(v0, v27, v29, v158, v30), stack_map=[i32 @ ss2+0, i32 @ ss1+0, i32 @ ss0+0] ; v27 = -1476394994, v158 = 32, v30 = 16 +;; @0025 v32 = load.i64 notrap aligned readonly can_move v0+8 +;; @0025 v33 = load.i64 notrap aligned readonly can_move v32+32 +;; @0025 v34 = uextend.i64 v31 +;; @0025 v35 = iadd v33, v34 +;; @0025 jump block4(v31, v35) ;; -;; block4(v42: i32, v43: i64): +;; block4(v44: i32, v45: i64): ;; @0025 v6 = iconst.i32 3 -;; @0025 v44 = iconst.i64 16 -;; @0025 v45 = iadd v43, v44 ; v44 = 16 -;; @0025 store user2 region1 v6, v45 ; v6 = 3 -;; @0025 trapz v42, user16 -;; v275 = load.i64 notrap aligned readonly can_move v0+8 -;; v276 = load.i64 notrap aligned readonly can_move v275+32 -;; @0025 v47 = uextend.i64 v42 -;; @0025 v49 = iadd v276, v47 -;; @0025 v51 = iadd v49, v44 ; v44 = 16 -;; @0025 v52 = load.i32 user2 readonly region1 v51 -;; @0025 trapz v52, user17 -;; @0025 v55 = uextend.i64 v52 -;; v151 = iconst.i64 2 -;; v180 = ishl v55, v151 ; v151 = 2 -;; v277 = iconst.i64 32 -;; v278 = ushr v180, v277 ; v277 = 32 -;; @0025 trapnz v278, user2 -;; v189 = iconst.i32 2 -;; v190 = ishl v52, v189 ; v189 = 2 +;; @0025 v46 = iconst.i64 16 +;; @0025 v47 = iadd v45, v46 ; v46 = 16 +;; @0025 store user2 region1 v6, v47 ; v6 = 3 +;; @0025 trapz v44, user16 +;; v273 = load.i64 notrap aligned readonly can_move v0+8 +;; v274 = load.i64 notrap aligned readonly can_move v273+32 +;; @0025 v49 = uextend.i64 v44 +;; @0025 v51 = iadd v274, v49 +;; @0025 v53 = iadd v51, v46 ; v46 = 16 +;; @0025 v54 = load.i32 user2 readonly region1 v53 +;; @0025 trapz v54, user17 +;; @0025 v57 = uextend.i64 v54 +;; v149 = iconst.i64 2 +;; v178 = ishl v57, v149 ; v149 = 2 +;; v275 = iconst.i64 32 +;; v276 = ushr v178, v275 ; v275 = 32 +;; @0025 trapnz v276, user2 +;; v187 = iconst.i32 2 +;; v188 = ishl v54, v187 ; v187 = 2 ;; @0025 v7 = iconst.i32 20 -;; @0025 v61 = uadd_overflow_trap v190, v7, user2 ; v7 = 20 -;; @0025 v65 = uadd_overflow_trap v42, v61, user2 -;; v129 = load.i32 notrap v130 -;; @0025 v66 = uextend.i64 v65 -;; @0025 v68 = iadd v276, v66 -;; @0025 v69 = isub v61, v7 ; v7 = 20 -;; @0025 v70 = uextend.i64 v69 -;; @0025 v71 = isub v68, v70 -;; @0025 store user2 little region1 v129, v71 -;; @0025 v78 = load.i32 user2 readonly region1 v51 -;; @0025 v72 = iconst.i32 1 -;; v207 = icmp ugt v78, v72 ; v72 = 1 -;; @0025 trapz v207, user17 -;; @0025 v81 = uextend.i64 v78 -;; v209 = ishl v81, v151 ; v151 = 2 -;; v279 = ushr v209, v277 ; v277 = 32 -;; @0025 trapnz v279, user2 -;; v216 = ishl v78, v189 ; v189 = 2 -;; @0025 v87 = uadd_overflow_trap v216, v7, user2 ; v7 = 20 -;; @0025 v91 = uadd_overflow_trap v42, v87, user2 -;; v127 = load.i32 notrap v131 -;; @0025 v92 = uextend.i64 v91 -;; @0025 v94 = iadd v276, v92 -;; v229 = iconst.i32 24 -;; @0025 v95 = isub v87, v229 ; v229 = 24 -;; @0025 v96 = uextend.i64 v95 -;; @0025 v97 = isub v94, v96 -;; @0025 store user2 little region1 v127, v97 -;; @0025 v104 = load.i32 user2 readonly region1 v51 -;; v235 = icmp ugt v104, v189 ; v189 = 2 -;; @0025 trapz v235, user17 -;; @0025 v107 = uextend.i64 v104 -;; v237 = ishl v107, v151 ; v151 = 2 -;; v280 = ushr v237, v277 ; v277 = 32 -;; @0025 trapnz v280, user2 -;; v244 = ishl v104, v189 ; v189 = 2 -;; @0025 v113 = uadd_overflow_trap v244, v7, user2 ; v7 = 20 -;; @0025 v117 = uadd_overflow_trap v42, v113, user2 -;; v125 = load.i32 notrap v132 -;; @0025 v118 = uextend.i64 v117 -;; @0025 v120 = iadd v276, v118 -;; v262 = iconst.i32 28 -;; @0025 v121 = isub v113, v262 ; v262 = 28 -;; @0025 v122 = uextend.i64 v121 -;; @0025 v123 = isub v120, v122 -;; @0025 store user2 little region1 v125, v123 -;; @0029 jump block1(v42) +;; @0025 v63 = uadd_overflow_trap v188, v7, user2 ; v7 = 20 +;; @0025 v67 = uadd_overflow_trap v44, v63, user2 +;; v131 = load.i32 notrap v132 +;; @0025 v68 = uextend.i64 v67 +;; @0025 v70 = iadd v274, v68 +;; @0025 v71 = isub v63, v7 ; v7 = 20 +;; @0025 v72 = uextend.i64 v71 +;; @0025 v73 = isub v70, v72 +;; @0025 store user2 little region1 v131, v73 +;; @0025 v80 = load.i32 user2 readonly region1 v53 +;; @0025 v74 = iconst.i32 1 +;; v205 = icmp ugt v80, v74 ; v74 = 1 +;; @0025 trapz v205, user17 +;; @0025 v83 = uextend.i64 v80 +;; v207 = ishl v83, v149 ; v149 = 2 +;; v277 = ushr v207, v275 ; v275 = 32 +;; @0025 trapnz v277, user2 +;; v214 = ishl v80, v187 ; v187 = 2 +;; @0025 v89 = uadd_overflow_trap v214, v7, user2 ; v7 = 20 +;; @0025 v93 = uadd_overflow_trap v44, v89, user2 +;; v129 = load.i32 notrap v133 +;; @0025 v94 = uextend.i64 v93 +;; @0025 v96 = iadd v274, v94 +;; v227 = iconst.i32 24 +;; @0025 v97 = isub v89, v227 ; v227 = 24 +;; @0025 v98 = uextend.i64 v97 +;; @0025 v99 = isub v96, v98 +;; @0025 store user2 little region1 v129, v99 +;; @0025 v106 = load.i32 user2 readonly region1 v53 +;; v233 = icmp ugt v106, v187 ; v187 = 2 +;; @0025 trapz v233, user17 +;; @0025 v109 = uextend.i64 v106 +;; v235 = ishl v109, v149 ; v149 = 2 +;; v278 = ushr v235, v275 ; v275 = 32 +;; @0025 trapnz v278, user2 +;; v242 = ishl v106, v187 ; v187 = 2 +;; @0025 v115 = uadd_overflow_trap v242, v7, user2 ; v7 = 20 +;; @0025 v119 = uadd_overflow_trap v44, v115, user2 +;; v127 = load.i32 notrap v134 +;; @0025 v120 = uextend.i64 v119 +;; @0025 v122 = iadd v274, v120 +;; v260 = iconst.i32 28 +;; @0025 v123 = isub v115, v260 ; v260 = 28 +;; @0025 v124 = uextend.i64 v123 +;; @0025 v125 = isub v122, v124 +;; @0025 store user2 little region1 v127, v125 +;; @0029 jump block1(v44) ;; ;; block1(v5: i32): ;; @0029 return v5 diff --git a/tests/disas/gc/copying/array-new-fixed.wat b/tests/disas/gc/copying/array-new-fixed.wat index 2834a06cdfd3..43d4454883f8 100644 --- a/tests/disas/gc/copying/array-new-fixed.wat +++ b/tests/disas/gc/copying/array-new-fixed.wat @@ -27,107 +27,107 @@ ;; @0025 v16 = load.i32 notrap aligned v15 ;; @0025 v17 = load.i32 notrap aligned v15+4 ;; @0025 v23 = uextend.i64 v16 -;; v150 = iconst.i64 48 -;; @0025 v24 = iadd v23, v150 ; v150 = 48 +;; v148 = iconst.i64 48 +;; @0025 v24 = iadd v23, v148 ; v148 = 48 ;; @0025 v25 = uextend.i64 v17 ;; @0025 v26 = icmp ule v24, v25 ;; @0025 brif v26, block2, block3 ;; ;; block2: -;; v256 = iconst.i32 48 -;; v164 = iadd.i32 v16, v256 ; v256 = 48 -;; @0025 store notrap aligned region0 v164, v15 -;; v257 = iconst.i32 -1476395002 -;; v258 = load.i64 notrap aligned readonly can_move v0+8 -;; v259 = load.i64 notrap aligned readonly can_move v258+32 -;; @0025 v38 = iadd v259, v23 -;; @0025 store notrap aligned v257, v38 ; v257 = -1476395002 -;; v260 = load.i64 notrap aligned readonly can_move v0+40 -;; v261 = load.i32 notrap aligned readonly can_move v260 -;; @0025 store notrap aligned v261, v38+4 -;; v262 = iconst.i64 48 -;; @0025 istore32 notrap aligned v262, v38+8 ; v262 = 48 -;; @0025 jump block4(v16, v38) +;; v254 = iconst.i32 48 +;; v162 = iadd.i32 v16, v254 ; v254 = 48 +;; @0025 store notrap aligned region0 v162, v15 +;; v255 = iconst.i32 -1476395002 +;; v256 = load.i64 notrap aligned readonly can_move v0+8 +;; v257 = load.i64 notrap aligned readonly can_move v256+32 +;; @0025 v40 = iadd v257, v23 +;; @0025 store notrap aligned v255, v40 ; v255 = -1476395002 +;; v258 = load.i64 notrap aligned readonly can_move v0+40 +;; v259 = load.i32 notrap aligned readonly can_move v258 +;; @0025 store notrap aligned v259, v40+4 +;; v260 = iconst.i64 48 +;; @0025 istore32 notrap aligned v260, v40+8 ; v260 = 48 +;; @0025 jump block4(v16, v40) ;; ;; block3 cold: ;; @0025 v27 = iconst.i32 -1476395002 ;; @0025 v28 = load.i64 notrap aligned readonly can_move v0+40 ;; @0025 v29 = load.i32 notrap aligned readonly can_move v28 -;; v149 = iconst.i32 48 +;; v147 = iconst.i32 48 ;; @0025 v30 = iconst.i32 16 -;; @0025 v31 = call fn0(v0, v27, v29, v149, v30) ; v27 = -1476395002, v149 = 48, v30 = 16 -;; @0025 v136 = load.i64 notrap aligned readonly can_move v0+8 -;; @0025 v32 = load.i64 notrap aligned readonly can_move v136+32 -;; @0025 v33 = uextend.i64 v31 -;; @0025 v34 = iadd v32, v33 -;; @0025 jump block4(v31, v34) +;; @0025 v31 = call fn0(v0, v27, v29, v147, v30) ; v27 = -1476395002, v147 = 48, v30 = 16 +;; @0025 v32 = load.i64 notrap aligned readonly can_move v0+8 +;; @0025 v33 = load.i64 notrap aligned readonly can_move v32+32 +;; @0025 v34 = uextend.i64 v31 +;; @0025 v35 = iadd v33, v34 +;; @0025 jump block4(v31, v35) ;; -;; block4(v42: i32, v43: i64): +;; block4(v44: i32, v45: i64): ;; @0025 v6 = iconst.i32 3 -;; @0025 v44 = iconst.i64 16 -;; @0025 v45 = iadd v43, v44 ; v44 = 16 -;; @0025 store user2 region1 v6, v45 ; v6 = 3 -;; @0025 trapz v42, user16 -;; v263 = load.i64 notrap aligned readonly can_move v0+8 -;; v264 = load.i64 notrap aligned readonly can_move v263+32 -;; @0025 v47 = uextend.i64 v42 -;; @0025 v49 = iadd v264, v47 -;; @0025 v51 = iadd v49, v44 ; v44 = 16 -;; @0025 v52 = load.i32 user2 readonly region1 v51 -;; @0025 trapz v52, user17 -;; @0025 v55 = uextend.i64 v52 -;; v140 = iconst.i64 3 -;; v170 = ishl v55, v140 ; v140 = 3 +;; @0025 v46 = iconst.i64 16 +;; @0025 v47 = iadd v45, v46 ; v46 = 16 +;; @0025 store user2 region1 v6, v47 ; v6 = 3 +;; @0025 trapz v44, user16 +;; v261 = load.i64 notrap aligned readonly can_move v0+8 +;; v262 = load.i64 notrap aligned readonly can_move v261+32 +;; @0025 v49 = uextend.i64 v44 +;; @0025 v51 = iadd v262, v49 +;; @0025 v53 = iadd v51, v46 ; v46 = 16 +;; @0025 v54 = load.i32 user2 readonly region1 v53 +;; @0025 trapz v54, user17 +;; @0025 v57 = uextend.i64 v54 +;; v138 = iconst.i64 3 +;; v168 = ishl v57, v138 ; v138 = 3 ;; @0025 v11 = iconst.i64 32 -;; @0025 v58 = ushr v170, v11 ; v11 = 32 -;; @0025 trapnz v58, user2 -;; v179 = ishl v52, v6 ; v6 = 3 +;; @0025 v60 = ushr v168, v11 ; v11 = 32 +;; @0025 trapnz v60, user2 +;; v177 = ishl v54, v6 ; v6 = 3 ;; @0025 v7 = iconst.i32 24 -;; @0025 v61 = uadd_overflow_trap v179, v7, user2 ; v7 = 24 -;; @0025 v65 = uadd_overflow_trap v42, v61, user2 -;; @0025 v66 = uextend.i64 v65 -;; @0025 v68 = iadd v264, v66 -;; @0025 v69 = isub v61, v7 ; v7 = 24 -;; @0025 v70 = uextend.i64 v69 -;; @0025 v71 = isub v68, v70 -;; @0025 store.i64 user2 little region1 v2, v71 -;; @0025 v78 = load.i32 user2 readonly region1 v51 -;; @0025 v72 = iconst.i32 1 -;; v196 = icmp ugt v78, v72 ; v72 = 1 -;; @0025 trapz v196, user17 -;; @0025 v81 = uextend.i64 v78 -;; v198 = ishl v81, v140 ; v140 = 3 -;; @0025 v84 = ushr v198, v11 ; v11 = 32 -;; @0025 trapnz v84, user2 -;; v205 = ishl v78, v6 ; v6 = 3 -;; @0025 v87 = uadd_overflow_trap v205, v7, user2 ; v7 = 24 -;; @0025 v91 = uadd_overflow_trap v42, v87, user2 -;; @0025 v92 = uextend.i64 v91 -;; @0025 v94 = iadd v264, v92 -;; v218 = iconst.i32 32 -;; @0025 v95 = isub v87, v218 ; v218 = 32 -;; @0025 v96 = uextend.i64 v95 -;; @0025 v97 = isub v94, v96 -;; @0025 store.i64 user2 little region1 v3, v97 -;; @0025 v104 = load.i32 user2 readonly region1 v51 -;; @0025 v98 = iconst.i32 2 -;; v224 = icmp ugt v104, v98 ; v98 = 2 -;; @0025 trapz v224, user17 -;; @0025 v107 = uextend.i64 v104 -;; v226 = ishl v107, v140 ; v140 = 3 -;; @0025 v110 = ushr v226, v11 ; v11 = 32 -;; @0025 trapnz v110, user2 -;; v233 = ishl v104, v6 ; v6 = 3 -;; @0025 v113 = uadd_overflow_trap v233, v7, user2 ; v7 = 24 -;; @0025 v117 = uadd_overflow_trap v42, v113, user2 -;; @0025 v118 = uextend.i64 v117 -;; @0025 v120 = iadd v264, v118 -;; v250 = iconst.i32 40 -;; @0025 v121 = isub v113, v250 ; v250 = 40 -;; @0025 v122 = uextend.i64 v121 -;; @0025 v123 = isub v120, v122 -;; @0025 store.i64 user2 little region1 v4, v123 -;; @0029 jump block1(v42) +;; @0025 v63 = uadd_overflow_trap v177, v7, user2 ; v7 = 24 +;; @0025 v67 = uadd_overflow_trap v44, v63, user2 +;; @0025 v68 = uextend.i64 v67 +;; @0025 v70 = iadd v262, v68 +;; @0025 v71 = isub v63, v7 ; v7 = 24 +;; @0025 v72 = uextend.i64 v71 +;; @0025 v73 = isub v70, v72 +;; @0025 store.i64 user2 little region1 v2, v73 +;; @0025 v80 = load.i32 user2 readonly region1 v53 +;; @0025 v74 = iconst.i32 1 +;; v194 = icmp ugt v80, v74 ; v74 = 1 +;; @0025 trapz v194, user17 +;; @0025 v83 = uextend.i64 v80 +;; v196 = ishl v83, v138 ; v138 = 3 +;; @0025 v86 = ushr v196, v11 ; v11 = 32 +;; @0025 trapnz v86, user2 +;; v203 = ishl v80, v6 ; v6 = 3 +;; @0025 v89 = uadd_overflow_trap v203, v7, user2 ; v7 = 24 +;; @0025 v93 = uadd_overflow_trap v44, v89, user2 +;; @0025 v94 = uextend.i64 v93 +;; @0025 v96 = iadd v262, v94 +;; v216 = iconst.i32 32 +;; @0025 v97 = isub v89, v216 ; v216 = 32 +;; @0025 v98 = uextend.i64 v97 +;; @0025 v99 = isub v96, v98 +;; @0025 store.i64 user2 little region1 v3, v99 +;; @0025 v106 = load.i32 user2 readonly region1 v53 +;; @0025 v100 = iconst.i32 2 +;; v222 = icmp ugt v106, v100 ; v100 = 2 +;; @0025 trapz v222, user17 +;; @0025 v109 = uextend.i64 v106 +;; v224 = ishl v109, v138 ; v138 = 3 +;; @0025 v112 = ushr v224, v11 ; v11 = 32 +;; @0025 trapnz v112, user2 +;; v231 = ishl v106, v6 ; v6 = 3 +;; @0025 v115 = uadd_overflow_trap v231, v7, user2 ; v7 = 24 +;; @0025 v119 = uadd_overflow_trap v44, v115, user2 +;; @0025 v120 = uextend.i64 v119 +;; @0025 v122 = iadd v262, v120 +;; v248 = iconst.i32 40 +;; @0025 v123 = isub v115, v248 ; v248 = 40 +;; @0025 v124 = uextend.i64 v123 +;; @0025 v125 = isub v122, v124 +;; @0025 store.i64 user2 little region1 v4, v125 +;; @0029 jump block1(v44) ;; ;; block1(v5: i32): ;; @0029 return v5 diff --git a/tests/disas/gc/copying/array-new.wat b/tests/disas/gc/copying/array-new.wat index bfc6822f4b74..ff7231b71d24 100644 --- a/tests/disas/gc/copying/array-new.wat +++ b/tests/disas/gc/copying/array-new.wat @@ -24,15 +24,15 @@ ;; ;; block0(v0: i64, v1: i64, v2: i64, v3: i32): ;; @0022 v6 = uextend.i64 v3 -;; v94 = iconst.i64 3 -;; v95 = ishl v6, v94 ; v94 = 3 +;; v89 = iconst.i64 3 +;; v90 = ishl v6, v89 ; v89 = 3 ;; @0022 v9 = iconst.i64 32 -;; @0022 v10 = ushr v95, v9 ; v9 = 32 +;; @0022 v10 = ushr v90, v9 ; v9 = 32 ;; @0022 trapnz v10, user18 ;; @0022 v5 = iconst.i32 24 -;; v101 = iconst.i32 3 -;; v102 = ishl v3, v101 ; v101 = 3 -;; @0022 v12 = uadd_overflow_trap v5, v102, user18 ; v5 = 24 +;; v96 = iconst.i32 3 +;; v97 = ishl v3, v96 ; v96 = 3 +;; @0022 v12 = uadd_overflow_trap v5, v97, user18 ; v5 = 24 ;; @0022 v13 = load.i64 notrap aligned readonly can_move v0+32 ;; @0022 v14 = load.i32 notrap aligned v13 ;; @0022 v15 = load.i32 notrap aligned v13+4 @@ -48,23 +48,23 @@ ;; @0022 brif v24, block2, block3 ;; ;; block2: -;; v110 = iconst.i32 15 -;; v111 = iadd.i32 v12, v110 ; v110 = 15 -;; v114 = iconst.i32 -16 -;; v115 = band v111, v114 ; v114 = -16 -;; v117 = iadd.i32 v14, v115 -;; @0022 store notrap aligned region0 v117, v13 -;; v133 = iconst.i32 -1476395002 -;; v134 = load.i64 notrap aligned readonly can_move v0+8 -;; v135 = load.i64 notrap aligned readonly can_move v134+32 -;; @0022 v36 = iadd v135, v21 -;; @0022 store notrap aligned v133, v36 ; v133 = -1476395002 -;; v136 = load.i64 notrap aligned readonly can_move v0+40 -;; v137 = load.i32 notrap aligned readonly can_move v136 -;; @0022 store notrap aligned v137, v36+4 -;; v138 = band.i64 v19, v18 ; v18 = -16 -;; @0022 istore32 notrap aligned v138, v36+8 -;; @0022 jump block4(v14, v36) +;; v105 = iconst.i32 15 +;; v106 = iadd.i32 v12, v105 ; v105 = 15 +;; v109 = iconst.i32 -16 +;; v110 = band v106, v109 ; v109 = -16 +;; v112 = iadd.i32 v14, v110 +;; @0022 store notrap aligned region0 v112, v13 +;; v128 = iconst.i32 -1476395002 +;; v129 = load.i64 notrap aligned readonly can_move v0+8 +;; v130 = load.i64 notrap aligned readonly can_move v129+32 +;; @0022 v38 = iadd v130, v21 +;; @0022 store notrap aligned v128, v38 ; v128 = -1476395002 +;; v131 = load.i64 notrap aligned readonly can_move v0+40 +;; v132 = load.i32 notrap aligned readonly can_move v131 +;; @0022 store notrap aligned v132, v38+4 +;; v133 = band.i64 v19, v18 ; v18 = -16 +;; @0022 istore32 notrap aligned v133, v38+8 +;; @0022 jump block4(v14, v38) ;; ;; block3 cold: ;; @0022 v25 = iconst.i32 -1476395002 @@ -72,48 +72,48 @@ ;; @0022 v27 = load.i32 notrap aligned readonly can_move v26 ;; @0022 v28 = iconst.i32 16 ;; @0022 v29 = call fn0(v0, v25, v27, v12, v28) ; v25 = -1476395002, v28 = 16 -;; @0022 v90 = load.i64 notrap aligned readonly can_move v0+8 -;; @0022 v30 = load.i64 notrap aligned readonly can_move v90+32 -;; @0022 v31 = uextend.i64 v29 -;; @0022 v32 = iadd v30, v31 -;; @0022 jump block4(v29, v32) +;; @0022 v30 = load.i64 notrap aligned readonly can_move v0+8 +;; @0022 v31 = load.i64 notrap aligned readonly can_move v30+32 +;; @0022 v32 = uextend.i64 v29 +;; @0022 v33 = iadd v31, v32 +;; @0022 jump block4(v29, v33) ;; -;; block4(v40: i32, v41: i64): -;; @0022 v42 = iconst.i64 16 -;; @0022 v43 = iadd v41, v42 ; v42 = 16 -;; @0022 store.i32 user2 region1 v3, v43 -;; @0022 trapz v40, user16 -;; v139 = load.i64 notrap aligned readonly can_move v0+8 -;; v140 = load.i64 notrap aligned readonly can_move v139+32 -;; @0022 v45 = uextend.i64 v40 -;; @0022 v47 = iadd v140, v45 -;; @0022 v49 = iadd v47, v42 ; v42 = 16 -;; @0022 v50 = load.i32 user2 readonly region1 v49 -;; @0022 v51 = uextend.i64 v50 -;; @0022 v57 = icmp.i64 ugt v6, v51 -;; @0022 trapnz v57, user17 -;; @0022 v71 = load.i64 notrap aligned v139+40 -;; @0022 v61 = iconst.i64 24 -;; @0022 v62 = iadd v47, v61 ; v61 = 24 -;; @0022 v73 = uadd_overflow_trap v62, v95, user2 -;; @0022 v72 = iadd v140, v71 -;; @0022 v74 = icmp ugt v73, v72 -;; @0022 trapnz v74, user2 -;; v119 = iconst.i64 0 -;; @0022 v77 = icmp.i64 eq v6, v119 ; v119 = 0 +;; block4(v42: i32, v43: i64): +;; @0022 v44 = iconst.i64 16 +;; @0022 v45 = iadd v43, v44 ; v44 = 16 +;; @0022 store.i32 user2 region1 v3, v45 +;; @0022 trapz v42, user16 +;; v134 = load.i64 notrap aligned readonly can_move v0+8 +;; v135 = load.i64 notrap aligned readonly can_move v134+32 +;; @0022 v47 = uextend.i64 v42 +;; @0022 v49 = iadd v135, v47 +;; @0022 v51 = iadd v49, v44 ; v44 = 16 +;; @0022 v52 = load.i32 user2 readonly region1 v51 +;; @0022 v53 = uextend.i64 v52 +;; @0022 v59 = icmp.i64 ugt v6, v53 +;; @0022 trapnz v59, user17 +;; @0022 v76 = load.i64 notrap aligned v134+40 +;; @0022 v64 = iconst.i64 24 +;; @0022 v65 = iadd v49, v64 ; v64 = 24 +;; @0022 v78 = uadd_overflow_trap v65, v90, user2 +;; @0022 v77 = iadd v135, v76 +;; @0022 v79 = icmp ugt v78, v77 +;; @0022 trapnz v79, user2 +;; v114 = iconst.i64 0 +;; @0022 v82 = icmp.i64 eq v6, v114 ; v114 = 0 ;; @0022 v7 = iconst.i64 8 -;; @0022 v75 = iadd v62, v95 -;; @0022 brif v77, block6, block5(v62) +;; @0022 v80 = iadd v65, v90 +;; @0022 brif v82, block6, block5(v65) ;; -;; block5(v78: i64): -;; @0022 store.i64 user2 little region1 v2, v78 -;; v141 = iconst.i64 8 -;; v142 = iadd v78, v141 ; v141 = 8 -;; @0022 v81 = icmp eq v142, v75 -;; @0022 brif v81, block6, block5(v142) +;; block5(v83: i64): +;; @0022 store.i64 user2 little region1 v2, v83 +;; v136 = iconst.i64 8 +;; v137 = iadd v83, v136 ; v136 = 8 +;; @0022 v86 = icmp eq v137, v80 +;; @0022 brif v86, block6, block5(v137) ;; ;; block6: -;; @0025 jump block1(v40) +;; @0025 jump block1(v42) ;; ;; block1(v4: i32): ;; @0025 return v4 diff --git a/tests/disas/gc/copying/funcref-in-gc-heap-new.wat b/tests/disas/gc/copying/funcref-in-gc-heap-new.wat index 6c91cf5a58ea..6f5b28162c31 100644 --- a/tests/disas/gc/copying/funcref-in-gc-heap-new.wat +++ b/tests/disas/gc/copying/funcref-in-gc-heap-new.wat @@ -15,9 +15,6 @@ ;; gv0 = vmctx ;; gv1 = load.i64 notrap aligned readonly gv0+8 ;; gv2 = load.i64 notrap aligned gv1+24 -;; gv3 = vmctx -;; gv4 = load.i64 notrap aligned readonly can_move gv3+8 -;; gv5 = load.i64 notrap aligned readonly can_move gv4+32 ;; sig0 = (i64 vmctx, i32, i32, i32, i32) -> i32 tail ;; sig1 = (i64 vmctx, i64) -> i64 tail ;; fn0 = colocated u805306368:24 sig0 @@ -29,27 +26,27 @@ ;; @0020 v6 = load.i32 notrap aligned v5 ;; @0020 v7 = load.i32 notrap aligned v5+4 ;; @0020 v13 = uextend.i64 v6 -;; v45 = iconst.i64 32 -;; @0020 v14 = iadd v13, v45 ; v45 = 32 +;; v43 = iconst.i64 32 +;; @0020 v14 = iadd v13, v43 ; v43 = 32 ;; @0020 v15 = uextend.i64 v7 ;; @0020 v16 = icmp ule v14, v15 ;; @0020 brif v16, block2, block3 ;; ;; block2: -;; v61 = iconst.i32 32 -;; v59 = iadd.i32 v6, v61 ; v61 = 32 -;; @0020 store notrap aligned region0 v59, v5 -;; v62 = iconst.i32 -1342177278 -;; v63 = load.i64 notrap aligned readonly can_move v0+8 -;; v64 = load.i64 notrap aligned readonly can_move v63+32 -;; @0020 v28 = iadd v64, v13 -;; @0020 store notrap aligned v62, v28 ; v62 = -1342177278 -;; v65 = load.i64 notrap aligned readonly can_move v0+40 -;; v66 = load.i32 notrap aligned readonly can_move v65 -;; @0020 store notrap aligned v66, v28+4 -;; v67 = iconst.i64 32 -;; @0020 istore32 notrap aligned v67, v28+8 ; v67 = 32 -;; @0020 jump block4(v6, v28) +;; v59 = iconst.i32 32 +;; v57 = iadd.i32 v6, v59 ; v59 = 32 +;; @0020 store notrap aligned region0 v57, v5 +;; v60 = iconst.i32 -1342177278 +;; v61 = load.i64 notrap aligned readonly can_move v0+8 +;; v62 = load.i64 notrap aligned readonly can_move v61+32 +;; @0020 v30 = iadd v62, v13 +;; @0020 store notrap aligned v60, v30 ; v60 = -1342177278 +;; v63 = load.i64 notrap aligned readonly can_move v0+40 +;; v64 = load.i32 notrap aligned readonly can_move v63 +;; @0020 store notrap aligned v64, v30+4 +;; v65 = iconst.i64 32 +;; @0020 istore32 notrap aligned v65, v30+8 ; v65 = 32 +;; @0020 jump block4(v6, v30) ;; ;; block3 cold: ;; @0020 v17 = iconst.i32 -1342177278 @@ -58,23 +55,23 @@ ;; @0020 v4 = iconst.i32 32 ;; @0020 v20 = iconst.i32 16 ;; @0020 v21 = call fn0(v0, v17, v19, v4, v20) ; v17 = -1342177278, v4 = 32, v20 = 16 -;; @0020 v41 = load.i64 notrap aligned readonly can_move v0+8 -;; @0020 v22 = load.i64 notrap aligned readonly can_move v41+32 -;; @0020 v23 = uextend.i64 v21 -;; @0020 v24 = iadd v22, v23 -;; @0020 jump block4(v21, v24) +;; @0020 v22 = load.i64 notrap aligned readonly can_move v0+8 +;; @0020 v23 = load.i64 notrap aligned readonly can_move v22+32 +;; @0020 v24 = uextend.i64 v21 +;; @0020 v25 = iadd v23, v24 +;; @0020 jump block4(v21, v25) ;; -;; block4(v32: i32, v33: i64): -;; v40 = stack_addr.i64 ss0 -;; store notrap v32, v40 -;; @0020 v36 = call fn1(v0, v2), stack_map=[i32 @ ss0+0] -;; @0020 v37 = ireduce.i32 v36 -;; @0020 v34 = iconst.i64 16 -;; @0020 v35 = iadd v33, v34 ; v34 = 16 -;; @0020 store user2 little region1 v37, v35 -;; v39 = load.i32 notrap v40 +;; block4(v34: i32, v35: i64): +;; v42 = stack_addr.i64 ss0 +;; store notrap v34, v42 +;; @0020 v38 = call fn1(v0, v2), stack_map=[i32 @ ss0+0] +;; @0020 v39 = ireduce.i32 v38 +;; @0020 v36 = iconst.i64 16 +;; @0020 v37 = iadd v35, v36 ; v36 = 16 +;; @0020 store user2 little region1 v39, v37 +;; v41 = load.i32 notrap v42 ;; @0023 jump block1 ;; ;; block1: -;; @0023 return v39 +;; @0023 return v41 ;; } diff --git a/tests/disas/gc/copying/struct-new-default.wat b/tests/disas/gc/copying/struct-new-default.wat index ef95f3231ef2..ebb07d8013e9 100644 --- a/tests/disas/gc/copying/struct-new-default.wat +++ b/tests/disas/gc/copying/struct-new-default.wat @@ -16,9 +16,6 @@ ;; gv0 = vmctx ;; gv1 = load.i64 notrap aligned readonly gv0+8 ;; gv2 = load.i64 notrap aligned gv1+24 -;; gv3 = vmctx -;; gv4 = load.i64 notrap aligned readonly can_move gv3+8 -;; gv5 = load.i64 notrap aligned readonly can_move gv4+32 ;; sig0 = (i64 vmctx, i32, i32, i32, i32) -> i32 tail ;; fn0 = colocated u805306368:24 sig0 ;; stack_limit = gv2 @@ -28,27 +25,27 @@ ;; @0021 v8 = load.i32 notrap aligned v7 ;; @0021 v9 = load.i32 notrap aligned v7+4 ;; @0021 v15 = uextend.i64 v8 -;; v46 = iconst.i64 32 -;; @0021 v16 = iadd v15, v46 ; v46 = 32 +;; v44 = iconst.i64 32 +;; @0021 v16 = iadd v15, v44 ; v44 = 32 ;; @0021 v17 = uextend.i64 v9 ;; @0021 v18 = icmp ule v16, v17 ;; @0021 brif v18, block2, block3 ;; ;; block2: -;; v62 = iconst.i32 32 -;; v60 = iadd.i32 v8, v62 ; v62 = 32 -;; @0021 store notrap aligned region0 v60, v7 -;; v63 = iconst.i32 -1342177246 -;; v64 = load.i64 notrap aligned readonly can_move v0+8 -;; v65 = load.i64 notrap aligned readonly can_move v64+32 -;; @0021 v30 = iadd v65, v15 -;; @0021 store notrap aligned v63, v30 ; v63 = -1342177246 -;; v66 = load.i64 notrap aligned readonly can_move v0+40 -;; v67 = load.i32 notrap aligned readonly can_move v66 -;; @0021 store notrap aligned v67, v30+4 -;; v68 = iconst.i64 32 -;; @0021 istore32 notrap aligned v68, v30+8 ; v68 = 32 -;; @0021 jump block4(v8, v30) +;; v60 = iconst.i32 32 +;; v58 = iadd.i32 v8, v60 ; v60 = 32 +;; @0021 store notrap aligned region0 v58, v7 +;; v61 = iconst.i32 -1342177246 +;; v62 = load.i64 notrap aligned readonly can_move v0+8 +;; v63 = load.i64 notrap aligned readonly can_move v62+32 +;; @0021 v32 = iadd v63, v15 +;; @0021 store notrap aligned v61, v32 ; v61 = -1342177246 +;; v64 = load.i64 notrap aligned readonly can_move v0+40 +;; v65 = load.i32 notrap aligned readonly can_move v64 +;; @0021 store notrap aligned v65, v32+4 +;; v66 = iconst.i64 32 +;; @0021 istore32 notrap aligned v66, v32+8 ; v66 = 32 +;; @0021 jump block4(v8, v32) ;; ;; block3 cold: ;; @0021 v19 = iconst.i32 -1342177246 @@ -57,25 +54,25 @@ ;; @0021 v6 = iconst.i32 32 ;; @0021 v22 = iconst.i32 16 ;; @0021 v23 = call fn0(v0, v19, v21, v6, v22) ; v19 = -1342177246, v6 = 32, v22 = 16 -;; @0021 v42 = load.i64 notrap aligned readonly can_move v0+8 -;; @0021 v24 = load.i64 notrap aligned readonly can_move v42+32 -;; @0021 v25 = uextend.i64 v23 -;; @0021 v26 = iadd v24, v25 -;; @0021 jump block4(v23, v26) +;; @0021 v24 = load.i64 notrap aligned readonly can_move v0+8 +;; @0021 v25 = load.i64 notrap aligned readonly can_move v24+32 +;; @0021 v26 = uextend.i64 v23 +;; @0021 v27 = iadd v25, v26 +;; @0021 jump block4(v23, v27) ;; -;; block4(v34: i32, v35: i64): +;; block4(v36: i32, v37: i64): ;; @0021 v3 = f32const 0.0 -;; @0021 v36 = iconst.i64 16 -;; @0021 v37 = iadd v35, v36 ; v36 = 16 -;; @0021 store user2 little region1 v3, v37 ; v3 = 0.0 +;; @0021 v38 = iconst.i64 16 +;; @0021 v39 = iadd v37, v38 ; v38 = 16 +;; @0021 store user2 little region1 v3, v39 ; v3 = 0.0 ;; @0021 v4 = iconst.i32 0 -;; @0021 v38 = iconst.i64 20 -;; @0021 v39 = iadd v35, v38 ; v38 = 20 -;; @0021 istore8 user2 little region1 v4, v39 ; v4 = 0 -;; @0021 v40 = iconst.i64 24 -;; @0021 v41 = iadd v35, v40 ; v40 = 24 -;; @0021 store user2 little region1 v4, v41 ; v4 = 0 -;; @0024 jump block1(v34) +;; @0021 v40 = iconst.i64 20 +;; @0021 v41 = iadd v37, v40 ; v40 = 20 +;; @0021 istore8 user2 little region1 v4, v41 ; v4 = 0 +;; @0021 v42 = iconst.i64 24 +;; @0021 v43 = iadd v37, v42 ; v42 = 24 +;; @0021 store user2 little region1 v4, v43 ; v4 = 0 +;; @0024 jump block1(v36) ;; ;; block1(v2: i32): ;; @0024 return v2 diff --git a/tests/disas/gc/copying/struct-new.wat b/tests/disas/gc/copying/struct-new.wat index 44ccdead1824..8dca82b15bc6 100644 --- a/tests/disas/gc/copying/struct-new.wat +++ b/tests/disas/gc/copying/struct-new.wat @@ -17,41 +17,38 @@ ;; gv0 = vmctx ;; gv1 = load.i64 notrap aligned readonly gv0+8 ;; gv2 = load.i64 notrap aligned gv1+24 -;; gv3 = vmctx -;; gv4 = load.i64 notrap aligned readonly can_move gv3+8 -;; gv5 = load.i64 notrap aligned readonly can_move gv4+32 ;; sig0 = (i64 vmctx, i32, i32, i32, i32) -> i32 tail ;; fn0 = colocated u805306368:24 sig0 ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: f32, v3: i32, v4: i32): -;; v44 = stack_addr.i64 ss0 -;; store notrap v4, v44 +;; v46 = stack_addr.i64 ss0 +;; store notrap v4, v46 ;; @002a v7 = load.i64 notrap aligned readonly can_move v0+32 ;; @002a v8 = load.i32 notrap aligned v7 ;; @002a v9 = load.i32 notrap aligned v7+4 ;; @002a v15 = uextend.i64 v8 -;; v49 = iconst.i64 32 -;; @002a v16 = iadd v15, v49 ; v49 = 32 +;; v47 = iconst.i64 32 +;; @002a v16 = iadd v15, v47 ; v47 = 32 ;; @002a v17 = uextend.i64 v9 ;; @002a v18 = icmp ule v16, v17 ;; @002a brif v18, block2, block3 ;; ;; block2: -;; v65 = iconst.i32 32 -;; v63 = iadd.i32 v8, v65 ; v65 = 32 -;; @002a store notrap aligned region0 v63, v7 -;; v66 = iconst.i32 -1342177246 -;; v67 = load.i64 notrap aligned readonly can_move v0+8 -;; v68 = load.i64 notrap aligned readonly can_move v67+32 -;; @002a v30 = iadd v68, v15 -;; @002a store notrap aligned v66, v30 ; v66 = -1342177246 -;; v69 = load.i64 notrap aligned readonly can_move v0+40 -;; v70 = load.i32 notrap aligned readonly can_move v69 -;; @002a store notrap aligned v70, v30+4 -;; v71 = iconst.i64 32 -;; @002a istore32 notrap aligned v71, v30+8 ; v71 = 32 -;; @002a jump block4(v8, v30) +;; v63 = iconst.i32 32 +;; v61 = iadd.i32 v8, v63 ; v63 = 32 +;; @002a store notrap aligned region0 v61, v7 +;; v64 = iconst.i32 -1342177246 +;; v65 = load.i64 notrap aligned readonly can_move v0+8 +;; v66 = load.i64 notrap aligned readonly can_move v65+32 +;; @002a v32 = iadd v66, v15 +;; @002a store notrap aligned v64, v32 ; v64 = -1342177246 +;; v67 = load.i64 notrap aligned readonly can_move v0+40 +;; v68 = load.i32 notrap aligned readonly can_move v67 +;; @002a store notrap aligned v68, v32+4 +;; v69 = iconst.i64 32 +;; @002a istore32 notrap aligned v69, v32+8 ; v69 = 32 +;; @002a jump block4(v8, v32) ;; ;; block3 cold: ;; @002a v19 = iconst.i32 -1342177246 @@ -60,24 +57,24 @@ ;; @002a v6 = iconst.i32 32 ;; @002a v22 = iconst.i32 16 ;; @002a v23 = call fn0(v0, v19, v21, v6, v22), stack_map=[i32 @ ss0+0] ; v19 = -1342177246, v6 = 32, v22 = 16 -;; @002a v45 = load.i64 notrap aligned readonly can_move v0+8 -;; @002a v24 = load.i64 notrap aligned readonly can_move v45+32 -;; @002a v25 = uextend.i64 v23 -;; @002a v26 = iadd v24, v25 -;; @002a jump block4(v23, v26) +;; @002a v24 = load.i64 notrap aligned readonly can_move v0+8 +;; @002a v25 = load.i64 notrap aligned readonly can_move v24+32 +;; @002a v26 = uextend.i64 v23 +;; @002a v27 = iadd v25, v26 +;; @002a jump block4(v23, v27) ;; -;; block4(v34: i32, v35: i64): -;; @002a v36 = iconst.i64 16 -;; @002a v37 = iadd v35, v36 ; v36 = 16 -;; @002a store.f32 user2 little region1 v2, v37 -;; @002a v38 = iconst.i64 20 -;; @002a v39 = iadd v35, v38 ; v38 = 20 -;; @002a istore8.i32 user2 little region1 v3, v39 -;; v43 = load.i32 notrap v44 -;; @002a v40 = iconst.i64 24 -;; @002a v41 = iadd v35, v40 ; v40 = 24 -;; @002a store user2 little region1 v43, v41 -;; @002d jump block1(v34) +;; block4(v36: i32, v37: i64): +;; @002a v38 = iconst.i64 16 +;; @002a v39 = iadd v37, v38 ; v38 = 16 +;; @002a store.f32 user2 little region1 v2, v39 +;; @002a v40 = iconst.i64 20 +;; @002a v41 = iadd v37, v40 ; v40 = 20 +;; @002a istore8.i32 user2 little region1 v3, v41 +;; v45 = load.i32 notrap v46 +;; @002a v42 = iconst.i64 24 +;; @002a v43 = iadd v37, v42 ; v42 = 24 +;; @002a store user2 little region1 v45, v43 +;; @002d jump block1(v36) ;; ;; block1(v5: i32): ;; @002d return v5 diff --git a/tests/disas/gc/drc/array-fill.wat b/tests/disas/gc/drc/array-fill.wat index c3eb821a8a52..d4609918ebb4 100644 --- a/tests/disas/gc/drc/array-fill.wat +++ b/tests/disas/gc/drc/array-fill.wat @@ -22,8 +22,8 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32, v4: i64, v5: i32): ;; @0027 trapz v2, user16 -;; @0027 v49 = load.i64 notrap aligned readonly can_move v0+8 -;; @0027 v7 = load.i64 notrap aligned readonly can_move v49+32 +;; @0027 v46 = load.i64 notrap aligned readonly can_move v0+8 +;; @0027 v7 = load.i64 notrap aligned readonly can_move v46+32 ;; @0027 v6 = uextend.i64 v2 ;; @0027 v8 = iadd v7, v6 ;; @0027 v9 = iconst.i64 24 @@ -35,29 +35,29 @@ ;; @0027 v12 = uextend.i64 v11 ;; @0027 v18 = icmp ugt v17, v12 ;; @0027 trapnz v18, user17 -;; @0027 v32 = load.i64 notrap aligned v49+40 -;; @0027 v22 = iconst.i64 32 -;; @0027 v23 = iadd v8, v22 ; v22 = 32 -;; v53 = iconst.i64 3 -;; v54 = ishl v13, v53 ; v53 = 3 -;; @0027 v27 = iadd v23, v54 -;; v56 = ishl v14, v53 ; v53 = 3 -;; @0027 v34 = uadd_overflow_trap v27, v56, user2 -;; @0027 v33 = iadd v7, v32 -;; @0027 v35 = icmp ugt v34, v33 -;; @0027 trapnz v35, user2 -;; v51 = iconst.i64 0 -;; @0027 v38 = icmp eq v14, v51 ; v51 = 0 -;; @0027 v25 = iconst.i64 8 -;; @0027 v36 = iadd v27, v56 -;; @0027 brif v38, block3, block2(v27) +;; @0027 v35 = load.i64 notrap aligned v46+40 +;; @0027 v23 = iconst.i64 32 +;; @0027 v24 = iadd v8, v23 ; v23 = 32 +;; v50 = iconst.i64 3 +;; v51 = ishl v13, v50 ; v50 = 3 +;; @0027 v28 = iadd v24, v51 +;; v53 = ishl v14, v50 ; v50 = 3 +;; @0027 v37 = uadd_overflow_trap v28, v53, user2 +;; @0027 v36 = iadd v7, v35 +;; @0027 v38 = icmp ugt v37, v36 +;; @0027 trapnz v38, user2 +;; v48 = iconst.i64 0 +;; @0027 v41 = icmp eq v14, v48 ; v48 = 0 +;; @0027 v26 = iconst.i64 8 +;; @0027 v39 = iadd v28, v53 +;; @0027 brif v41, block3, block2(v28) ;; -;; block2(v39: i64): -;; @0027 store.i64 user2 little region0 v4, v39 -;; v58 = iconst.i64 8 -;; v59 = iadd v39, v58 ; v58 = 8 -;; @0027 v42 = icmp eq v59, v36 -;; @0027 brif v42, block3, block2(v59) +;; block2(v42: i64): +;; @0027 store.i64 user2 little region0 v4, v42 +;; v55 = iconst.i64 8 +;; v56 = iadd v42, v55 ; v55 = 8 +;; @0027 v45 = icmp eq v56, v39 +;; @0027 brif v45, block3, block2(v56) ;; ;; block3: ;; @002a jump block1 diff --git a/tests/disas/gc/drc/array-new-fixed-of-gc-refs.wat b/tests/disas/gc/drc/array-new-fixed-of-gc-refs.wat index 8fba80a74871..5c55b9f241a9 100644 --- a/tests/disas/gc/drc/array-new-fixed-of-gc-refs.wat +++ b/tests/disas/gc/drc/array-new-fixed-of-gc-refs.wat @@ -26,146 +26,146 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32, v4: i32): -;; v190 = stack_addr.i64 ss2 -;; store notrap v2, v190 -;; v191 = stack_addr.i64 ss1 -;; store notrap v3, v191 -;; v192 = stack_addr.i64 ss0 -;; store notrap v4, v192 +;; v191 = stack_addr.i64 ss2 +;; store notrap v2, v191 +;; v192 = stack_addr.i64 ss1 +;; store notrap v3, v192 +;; v193 = stack_addr.i64 ss0 +;; store notrap v4, v193 ;; @0025 v15 = iconst.i32 -1476395008 ;; @0025 v16 = load.i64 notrap aligned readonly can_move v0+40 ;; @0025 v17 = load.i32 notrap aligned readonly can_move v16 -;; v230 = iconst.i32 40 +;; v229 = iconst.i32 40 ;; @0025 v18 = iconst.i32 8 -;; @0025 v19 = call fn0(v0, v15, v17, v230, v18), stack_map=[i32 @ ss2+0, i32 @ ss1+0, i32 @ ss0+0] ; v15 = -1476395008, v230 = 40, v18 = 8 +;; @0025 v19 = call fn0(v0, v15, v17, v229, v18), stack_map=[i32 @ ss2+0, i32 @ ss1+0, i32 @ ss0+0] ; v15 = -1476395008, v229 = 40, v18 = 8 ;; @0025 v6 = iconst.i32 3 -;; @0025 v217 = load.i64 notrap aligned readonly can_move v0+8 -;; @0025 v20 = load.i64 notrap aligned readonly can_move v217+32 -;; @0025 v21 = uextend.i64 v19 -;; @0025 v22 = iadd v20, v21 -;; @0025 v23 = iconst.i64 24 -;; @0025 v24 = iadd v22, v23 ; v23 = 24 -;; @0025 store user2 region0 v6, v24 ; v6 = 3 +;; @0025 v20 = load.i64 notrap aligned readonly can_move v0+8 +;; @0025 v21 = load.i64 notrap aligned readonly can_move v20+32 +;; @0025 v22 = uextend.i64 v19 +;; @0025 v23 = iadd v21, v22 +;; @0025 v24 = iconst.i64 24 +;; @0025 v25 = iadd v23, v24 ; v24 = 24 +;; @0025 store user2 region0 v6, v25 ; v6 = 3 ;; @0025 trapz v19, user16 -;; @0025 v44 = uadd_overflow_trap v19, v230, user2 ; v230 = 40 -;; v189 = load.i32 notrap v190 -;; @0025 v51 = iconst.i32 1 -;; @0025 v52 = band v189, v51 ; v51 = 1 -;; @0025 v25 = iconst.i32 0 -;; @0025 v54 = icmp eq v189, v25 ; v25 = 0 -;; @0025 v55 = uextend.i32 v54 -;; @0025 v56 = bor v52, v55 -;; @0025 brif v56, block3, block2 +;; @0025 v45 = uadd_overflow_trap v19, v229, user2 ; v229 = 40 +;; v190 = load.i32 notrap v191 +;; @0025 v52 = iconst.i32 1 +;; @0025 v53 = band v190, v52 ; v52 = 1 +;; @0025 v26 = iconst.i32 0 +;; @0025 v55 = icmp eq v190, v26 ; v26 = 0 +;; @0025 v56 = uextend.i32 v55 +;; @0025 v57 = bor v53, v56 +;; @0025 brif v57, block3, block2 ;; ;; block2: -;; v185 = load.i32 notrap v190 -;; @0025 v57 = uextend.i64 v185 -;; @0025 v59 = iadd.i64 v20, v57 -;; @0025 v60 = iconst.i64 8 -;; @0025 v61 = iadd v59, v60 ; v60 = 8 -;; @0025 v62 = load.i64 user2 region0 v61 -;; @0025 v63 = iconst.i64 1 -;; @0025 v64 = iadd v62, v63 ; v63 = 1 -;; @0025 store user2 region0 v64, v61 +;; v186 = load.i32 notrap v191 +;; @0025 v58 = uextend.i64 v186 +;; @0025 v60 = iadd.i64 v21, v58 +;; @0025 v61 = iconst.i64 8 +;; @0025 v62 = iadd v60, v61 ; v61 = 8 +;; @0025 v63 = load.i64 user2 region0 v62 +;; @0025 v64 = iconst.i64 1 +;; @0025 v65 = iadd v63, v64 ; v64 = 1 +;; @0025 store user2 region0 v65, v62 ;; @0025 jump block3 ;; ;; block3: -;; v181 = load.i32 notrap v190 -;; @0025 v45 = uextend.i64 v44 -;; @0025 v47 = iadd.i64 v20, v45 -;; v220 = iconst.i64 12 -;; @0025 v50 = isub v47, v220 ; v220 = 12 -;; @0025 store user2 little region0 v181, v50 -;; v323 = iadd.i64 v22, v23 ; v23 = 24 -;; @0025 v76 = load.i32 user2 readonly region0 v323 -;; v324 = iconst.i32 1 -;; v325 = icmp ugt v76, v324 ; v324 = 1 -;; @0025 trapz v325, user17 -;; @0025 v79 = uextend.i64 v76 -;; v221 = iconst.i64 2 -;; v265 = ishl v79, v221 ; v221 = 2 +;; v182 = load.i32 notrap v191 +;; @0025 v46 = uextend.i64 v45 +;; @0025 v48 = iadd.i64 v21, v46 +;; v219 = iconst.i64 12 +;; @0025 v51 = isub v48, v219 ; v219 = 12 +;; @0025 store user2 little region0 v182, v51 +;; v322 = iadd.i64 v23, v24 ; v24 = 24 +;; @0025 v77 = load.i32 user2 readonly region0 v322 +;; v323 = iconst.i32 1 +;; v324 = icmp ugt v77, v323 ; v323 = 1 +;; @0025 trapz v324, user17 +;; @0025 v80 = uextend.i64 v77 +;; v220 = iconst.i64 2 +;; v264 = ishl v80, v220 ; v220 = 2 ;; @0025 v11 = iconst.i64 32 -;; @0025 v82 = ushr v265, v11 ; v11 = 32 -;; @0025 trapnz v82, user2 -;; v242 = iconst.i32 2 -;; v272 = ishl v76, v242 ; v242 = 2 +;; @0025 v83 = ushr v264, v11 ; v11 = 32 +;; @0025 trapnz v83, user2 +;; v241 = iconst.i32 2 +;; v271 = ishl v77, v241 ; v241 = 2 ;; @0025 v7 = iconst.i32 28 -;; @0025 v85 = uadd_overflow_trap v272, v7, user2 ; v7 = 28 -;; @0025 v89 = uadd_overflow_trap.i32 v19, v85, user2 -;; v179 = load.i32 notrap v191 -;; v326 = band v179, v324 ; v324 = 1 -;; v327 = iconst.i32 0 -;; v328 = icmp eq v179, v327 ; v327 = 0 -;; @0025 v100 = uextend.i32 v328 -;; @0025 v101 = bor v326, v100 -;; @0025 brif v101, block5, block4 +;; @0025 v86 = uadd_overflow_trap v271, v7, user2 ; v7 = 28 +;; @0025 v90 = uadd_overflow_trap.i32 v19, v86, user2 +;; v180 = load.i32 notrap v192 +;; v325 = band v180, v323 ; v323 = 1 +;; v326 = iconst.i32 0 +;; v327 = icmp eq v180, v326 ; v326 = 0 +;; @0025 v101 = uextend.i32 v327 +;; @0025 v102 = bor v325, v101 +;; @0025 brif v102, block5, block4 ;; ;; block4: -;; v175 = load.i32 notrap v191 -;; @0025 v102 = uextend.i64 v175 -;; @0025 v104 = iadd.i64 v20, v102 -;; v329 = iconst.i64 8 -;; @0025 v106 = iadd v104, v329 ; v329 = 8 -;; @0025 v107 = load.i64 user2 region0 v106 -;; v330 = iconst.i64 1 -;; @0025 v109 = iadd v107, v330 ; v330 = 1 -;; @0025 store user2 region0 v109, v106 +;; v176 = load.i32 notrap v192 +;; @0025 v103 = uextend.i64 v176 +;; @0025 v105 = iadd.i64 v21, v103 +;; v328 = iconst.i64 8 +;; @0025 v107 = iadd v105, v328 ; v328 = 8 +;; @0025 v108 = load.i64 user2 region0 v107 +;; v329 = iconst.i64 1 +;; @0025 v110 = iadd v108, v329 ; v329 = 1 +;; @0025 store user2 region0 v110, v107 ;; @0025 jump block5 ;; ;; block5: -;; v171 = load.i32 notrap v191 -;; @0025 v90 = uextend.i64 v89 -;; @0025 v92 = iadd.i64 v20, v90 -;; v285 = iconst.i32 32 -;; @0025 v93 = isub.i32 v85, v285 ; v285 = 32 -;; @0025 v94 = uextend.i64 v93 -;; @0025 v95 = isub v92, v94 -;; @0025 store user2 little region0 v171, v95 -;; v331 = iadd.i64 v22, v23 ; v23 = 24 -;; @0025 v121 = load.i32 user2 readonly region0 v331 -;; v332 = iconst.i32 2 -;; v333 = icmp ugt v121, v332 ; v332 = 2 -;; @0025 trapz v333, user17 -;; @0025 v124 = uextend.i64 v121 -;; v334 = iconst.i64 2 -;; v335 = ishl v124, v334 ; v334 = 2 -;; v336 = iconst.i64 32 -;; v337 = ushr v335, v336 ; v336 = 32 -;; @0025 trapnz v337, user2 -;; v338 = ishl v121, v332 ; v332 = 2 -;; v339 = iconst.i32 28 -;; @0025 v130 = uadd_overflow_trap v338, v339, user2 ; v339 = 28 -;; @0025 v134 = uadd_overflow_trap.i32 v19, v130, user2 -;; v169 = load.i32 notrap v192 -;; v340 = iconst.i32 1 -;; v341 = band v169, v340 ; v340 = 1 -;; v342 = iconst.i32 0 -;; v343 = icmp eq v169, v342 ; v342 = 0 -;; @0025 v145 = uextend.i32 v343 -;; @0025 v146 = bor v341, v145 -;; @0025 brif v146, block7, block6 +;; v172 = load.i32 notrap v192 +;; @0025 v91 = uextend.i64 v90 +;; @0025 v93 = iadd.i64 v21, v91 +;; v284 = iconst.i32 32 +;; @0025 v94 = isub.i32 v86, v284 ; v284 = 32 +;; @0025 v95 = uextend.i64 v94 +;; @0025 v96 = isub v93, v95 +;; @0025 store user2 little region0 v172, v96 +;; v330 = iadd.i64 v23, v24 ; v24 = 24 +;; @0025 v122 = load.i32 user2 readonly region0 v330 +;; v331 = iconst.i32 2 +;; v332 = icmp ugt v122, v331 ; v331 = 2 +;; @0025 trapz v332, user17 +;; @0025 v125 = uextend.i64 v122 +;; v333 = iconst.i64 2 +;; v334 = ishl v125, v333 ; v333 = 2 +;; v335 = iconst.i64 32 +;; v336 = ushr v334, v335 ; v335 = 32 +;; @0025 trapnz v336, user2 +;; v337 = ishl v122, v331 ; v331 = 2 +;; v338 = iconst.i32 28 +;; @0025 v131 = uadd_overflow_trap v337, v338, user2 ; v338 = 28 +;; @0025 v135 = uadd_overflow_trap.i32 v19, v131, user2 +;; v170 = load.i32 notrap v193 +;; v339 = iconst.i32 1 +;; v340 = band v170, v339 ; v339 = 1 +;; v341 = iconst.i32 0 +;; v342 = icmp eq v170, v341 ; v341 = 0 +;; @0025 v146 = uextend.i32 v342 +;; @0025 v147 = bor v340, v146 +;; @0025 brif v147, block7, block6 ;; ;; block6: -;; v165 = load.i32 notrap v192 -;; @0025 v147 = uextend.i64 v165 -;; @0025 v149 = iadd.i64 v20, v147 -;; v344 = iconst.i64 8 -;; @0025 v151 = iadd v149, v344 ; v344 = 8 -;; @0025 v152 = load.i64 user2 region0 v151 -;; v345 = iconst.i64 1 -;; @0025 v154 = iadd v152, v345 ; v345 = 1 -;; @0025 store user2 region0 v154, v151 +;; v166 = load.i32 notrap v193 +;; @0025 v148 = uextend.i64 v166 +;; @0025 v150 = iadd.i64 v21, v148 +;; v343 = iconst.i64 8 +;; @0025 v152 = iadd v150, v343 ; v343 = 8 +;; @0025 v153 = load.i64 user2 region0 v152 +;; v344 = iconst.i64 1 +;; @0025 v155 = iadd v153, v344 ; v344 = 1 +;; @0025 store user2 region0 v155, v152 ;; @0025 jump block7 ;; ;; block7: -;; v161 = load.i32 notrap v192 -;; @0025 v135 = uextend.i64 v134 -;; @0025 v137 = iadd.i64 v20, v135 -;; v317 = iconst.i32 36 -;; @0025 v138 = isub.i32 v130, v317 ; v317 = 36 -;; @0025 v139 = uextend.i64 v138 -;; @0025 v140 = isub v137, v139 -;; @0025 store user2 little region0 v161, v140 +;; v162 = load.i32 notrap v193 +;; @0025 v136 = uextend.i64 v135 +;; @0025 v138 = iadd.i64 v21, v136 +;; v316 = iconst.i32 36 +;; @0025 v139 = isub.i32 v131, v316 ; v316 = 36 +;; @0025 v140 = uextend.i64 v139 +;; @0025 v141 = isub v138, v140 +;; @0025 store user2 little region0 v162, v141 ;; @0029 jump block1 ;; ;; block1: diff --git a/tests/disas/gc/drc/array-new-fixed.wat b/tests/disas/gc/drc/array-new-fixed.wat index 75d3ea77005e..453f2568c2c6 100644 --- a/tests/disas/gc/drc/array-new-fixed.wat +++ b/tests/disas/gc/drc/array-new-fixed.wat @@ -26,62 +26,62 @@ ;; @0025 v15 = iconst.i32 -1476395008 ;; @0025 v16 = load.i64 notrap aligned readonly can_move v0+40 ;; @0025 v17 = load.i32 notrap aligned readonly can_move v16 -;; v127 = iconst.i32 56 +;; v126 = iconst.i32 56 ;; @0025 v18 = iconst.i32 8 -;; @0025 v19 = call fn0(v0, v15, v17, v127, v18) ; v15 = -1476395008, v127 = 56, v18 = 8 +;; @0025 v19 = call fn0(v0, v15, v17, v126, v18) ; v15 = -1476395008, v126 = 56, v18 = 8 ;; @0025 v6 = iconst.i32 3 -;; @0025 v115 = load.i64 notrap aligned readonly can_move v0+8 -;; @0025 v20 = load.i64 notrap aligned readonly can_move v115+32 -;; @0025 v21 = uextend.i64 v19 -;; @0025 v22 = iadd v20, v21 -;; v118 = iconst.i64 24 -;; @0025 v24 = iadd v22, v118 ; v118 = 24 -;; @0025 store user2 region0 v6, v24 ; v6 = 3 +;; @0025 v20 = load.i64 notrap aligned readonly can_move v0+8 +;; @0025 v21 = load.i64 notrap aligned readonly can_move v20+32 +;; @0025 v22 = uextend.i64 v19 +;; @0025 v23 = iadd v21, v22 +;; v117 = iconst.i64 24 +;; @0025 v25 = iadd v23, v117 ; v117 = 24 +;; @0025 store user2 region0 v6, v25 ; v6 = 3 ;; @0025 trapz v19, user16 -;; @0025 v44 = uadd_overflow_trap v19, v127, user2 ; v127 = 56 -;; @0025 v45 = uextend.i64 v44 -;; @0025 v47 = iadd v20, v45 -;; @0025 v50 = isub v47, v118 ; v118 = 24 -;; @0025 store user2 little region0 v2, v50 -;; @0025 v57 = load.i32 user2 readonly region0 v24 -;; @0025 v51 = iconst.i32 1 -;; v158 = icmp ugt v57, v51 ; v51 = 1 -;; @0025 trapz v158, user17 -;; @0025 v60 = uextend.i64 v57 -;; v117 = iconst.i64 3 -;; v160 = ishl v60, v117 ; v117 = 3 +;; @0025 v45 = uadd_overflow_trap v19, v126, user2 ; v126 = 56 +;; @0025 v46 = uextend.i64 v45 +;; @0025 v48 = iadd v21, v46 +;; @0025 v51 = isub v48, v117 ; v117 = 24 +;; @0025 store user2 little region0 v2, v51 +;; @0025 v58 = load.i32 user2 readonly region0 v25 +;; @0025 v52 = iconst.i32 1 +;; v157 = icmp ugt v58, v52 ; v52 = 1 +;; @0025 trapz v157, user17 +;; @0025 v61 = uextend.i64 v58 +;; v116 = iconst.i64 3 +;; v159 = ishl v61, v116 ; v116 = 3 ;; @0025 v11 = iconst.i64 32 -;; @0025 v63 = ushr v160, v11 ; v11 = 32 -;; @0025 trapnz v63, user2 -;; v167 = ishl v57, v6 ; v6 = 3 +;; @0025 v64 = ushr v159, v11 ; v11 = 32 +;; @0025 trapnz v64, user2 +;; v166 = ishl v58, v6 ; v6 = 3 ;; @0025 v7 = iconst.i32 32 -;; @0025 v66 = uadd_overflow_trap v167, v7, user2 ; v7 = 32 -;; @0025 v70 = uadd_overflow_trap v19, v66, user2 -;; @0025 v71 = uextend.i64 v70 -;; @0025 v73 = iadd v20, v71 -;; v180 = iconst.i32 40 -;; @0025 v74 = isub v66, v180 ; v180 = 40 -;; @0025 v75 = uextend.i64 v74 -;; @0025 v76 = isub v73, v75 -;; @0025 store user2 little region0 v3, v76 -;; @0025 v83 = load.i32 user2 readonly region0 v24 -;; @0025 v77 = iconst.i32 2 -;; v186 = icmp ugt v83, v77 ; v77 = 2 -;; @0025 trapz v186, user17 -;; @0025 v86 = uextend.i64 v83 -;; v188 = ishl v86, v117 ; v117 = 3 -;; @0025 v89 = ushr v188, v11 ; v11 = 32 -;; @0025 trapnz v89, user2 -;; v195 = ishl v83, v6 ; v6 = 3 -;; @0025 v92 = uadd_overflow_trap v195, v7, user2 ; v7 = 32 -;; @0025 v96 = uadd_overflow_trap v19, v92, user2 -;; @0025 v97 = uextend.i64 v96 -;; @0025 v99 = iadd v20, v97 -;; v213 = iconst.i32 48 -;; @0025 v100 = isub v92, v213 ; v213 = 48 -;; @0025 v101 = uextend.i64 v100 -;; @0025 v102 = isub v99, v101 -;; @0025 store user2 little region0 v4, v102 +;; @0025 v67 = uadd_overflow_trap v166, v7, user2 ; v7 = 32 +;; @0025 v71 = uadd_overflow_trap v19, v67, user2 +;; @0025 v72 = uextend.i64 v71 +;; @0025 v74 = iadd v21, v72 +;; v179 = iconst.i32 40 +;; @0025 v75 = isub v67, v179 ; v179 = 40 +;; @0025 v76 = uextend.i64 v75 +;; @0025 v77 = isub v74, v76 +;; @0025 store user2 little region0 v3, v77 +;; @0025 v84 = load.i32 user2 readonly region0 v25 +;; @0025 v78 = iconst.i32 2 +;; v185 = icmp ugt v84, v78 ; v78 = 2 +;; @0025 trapz v185, user17 +;; @0025 v87 = uextend.i64 v84 +;; v187 = ishl v87, v116 ; v116 = 3 +;; @0025 v90 = ushr v187, v11 ; v11 = 32 +;; @0025 trapnz v90, user2 +;; v194 = ishl v84, v6 ; v6 = 3 +;; @0025 v93 = uadd_overflow_trap v194, v7, user2 ; v7 = 32 +;; @0025 v97 = uadd_overflow_trap v19, v93, user2 +;; @0025 v98 = uextend.i64 v97 +;; @0025 v100 = iadd v21, v98 +;; v212 = iconst.i32 48 +;; @0025 v101 = isub v93, v212 ; v212 = 48 +;; @0025 v102 = uextend.i64 v101 +;; @0025 v103 = isub v100, v102 +;; @0025 store user2 little region0 v4, v103 ;; @0029 jump block1 ;; ;; block1: diff --git a/tests/disas/gc/drc/array-new.wat b/tests/disas/gc/drc/array-new.wat index 2d841ab4923d..0390b616e5de 100644 --- a/tests/disas/gc/drc/array-new.wat +++ b/tests/disas/gc/drc/array-new.wat @@ -24,46 +24,46 @@ ;; ;; block0(v0: i64, v1: i64, v2: i64, v3: i32): ;; @0022 v6 = uextend.i64 v3 -;; v71 = iconst.i64 3 -;; v72 = ishl v6, v71 ; v71 = 3 +;; v67 = iconst.i64 3 +;; v68 = ishl v6, v67 ; v67 = 3 ;; @0022 v9 = iconst.i64 32 -;; @0022 v10 = ushr v72, v9 ; v9 = 32 +;; @0022 v10 = ushr v68, v9 ; v9 = 32 ;; @0022 trapnz v10, user18 ;; @0022 v5 = iconst.i32 32 -;; v78 = iconst.i32 3 -;; v79 = ishl v3, v78 ; v78 = 3 -;; @0022 v12 = uadd_overflow_trap v5, v79, user18 ; v5 = 32 +;; v74 = iconst.i32 3 +;; v75 = ishl v3, v74 ; v74 = 3 +;; @0022 v12 = uadd_overflow_trap v5, v75, user18 ; v5 = 32 ;; @0022 v13 = iconst.i32 -1476395008 ;; @0022 v14 = load.i64 notrap aligned readonly can_move v0+40 ;; @0022 v15 = load.i32 notrap aligned readonly can_move v14 -;; v76 = iconst.i32 8 -;; @0022 v17 = call fn0(v0, v13, v15, v12, v76) ; v13 = -1476395008, v76 = 8 -;; @0022 v69 = load.i64 notrap aligned readonly can_move v0+8 -;; @0022 v18 = load.i64 notrap aligned readonly can_move v69+32 -;; @0022 v19 = uextend.i64 v17 -;; @0022 v20 = iadd v18, v19 -;; @0022 v21 = iconst.i64 24 -;; @0022 v22 = iadd v20, v21 ; v21 = 24 -;; @0022 store user2 region0 v3, v22 +;; v72 = iconst.i32 8 +;; @0022 v17 = call fn0(v0, v13, v15, v12, v72) ; v13 = -1476395008, v72 = 8 +;; @0022 v18 = load.i64 notrap aligned readonly can_move v0+8 +;; @0022 v19 = load.i64 notrap aligned readonly can_move v18+32 +;; @0022 v20 = uextend.i64 v17 +;; @0022 v21 = iadd v19, v20 +;; @0022 v22 = iconst.i64 24 +;; @0022 v23 = iadd v21, v22 ; v22 = 24 +;; @0022 store user2 region0 v3, v23 ;; @0022 trapz v17, user16 -;; @0022 v50 = load.i64 notrap aligned v69+40 -;; @0022 v41 = iadd v20, v9 ; v9 = 32 -;; @0022 v52 = uadd_overflow_trap v41, v72, user2 -;; @0022 v51 = iadd v18, v50 -;; @0022 v53 = icmp ugt v52, v51 -;; @0022 trapnz v53, user2 -;; v82 = iconst.i64 0 -;; @0022 v56 = icmp eq v6, v82 ; v82 = 0 +;; @0022 v54 = load.i64 notrap aligned v18+40 +;; @0022 v43 = iadd v21, v9 ; v9 = 32 +;; @0022 v56 = uadd_overflow_trap v43, v68, user2 +;; @0022 v55 = iadd v19, v54 +;; @0022 v57 = icmp ugt v56, v55 +;; @0022 trapnz v57, user2 +;; v78 = iconst.i64 0 +;; @0022 v60 = icmp eq v6, v78 ; v78 = 0 ;; @0022 v7 = iconst.i64 8 -;; @0022 v54 = iadd v41, v72 -;; @0022 brif v56, block3, block2(v41) +;; @0022 v58 = iadd v43, v68 +;; @0022 brif v60, block3, block2(v43) ;; -;; block2(v57: i64): -;; @0022 store.i64 user2 little region0 v2, v57 -;; v97 = iconst.i64 8 -;; v98 = iadd v57, v97 ; v97 = 8 -;; @0022 v60 = icmp eq v98, v54 -;; @0022 brif v60, block3, block2(v98) +;; block2(v61: i64): +;; @0022 store.i64 user2 little region0 v2, v61 +;; v93 = iconst.i64 8 +;; v94 = iadd v61, v93 ; v93 = 8 +;; @0022 v64 = icmp eq v94, v58 +;; @0022 brif v64, block3, block2(v94) ;; ;; block3: ;; @0025 jump block1 diff --git a/tests/disas/gc/drc/funcref-in-gc-heap-new.wat b/tests/disas/gc/drc/funcref-in-gc-heap-new.wat index 4c2efbf41327..3a2158591e5a 100644 --- a/tests/disas/gc/drc/funcref-in-gc-heap-new.wat +++ b/tests/disas/gc/drc/funcref-in-gc-heap-new.wat @@ -15,9 +15,6 @@ ;; gv0 = vmctx ;; gv1 = load.i64 notrap aligned readonly gv0+8 ;; gv2 = load.i64 notrap aligned gv1+24 -;; gv3 = vmctx -;; gv4 = load.i64 notrap aligned readonly can_move gv3+8 -;; gv5 = load.i64 notrap aligned readonly can_move gv4+32 ;; sig0 = (i64 vmctx, i32, i32, i32, i32) -> i32 tail ;; sig1 = (i64 vmctx, i64) -> i64 tail ;; fn0 = colocated u805306368:24 sig0 @@ -31,20 +28,20 @@ ;; @0020 v4 = iconst.i32 32 ;; @0020 v8 = iconst.i32 8 ;; @0020 v9 = call fn0(v0, v5, v7, v4, v8) ; v5 = -1342177280, v4 = 32, v8 = 8 -;; v21 = stack_addr.i64 ss0 -;; store notrap v9, v21 -;; @0020 v15 = call fn1(v0, v2), stack_map=[i32 @ ss0+0] -;; @0020 v16 = ireduce.i32 v15 -;; @0020 v22 = load.i64 notrap aligned readonly can_move v0+8 -;; @0020 v10 = load.i64 notrap aligned readonly can_move v22+32 -;; @0020 v11 = uextend.i64 v9 -;; @0020 v12 = iadd v10, v11 -;; @0020 v13 = iconst.i64 24 -;; @0020 v14 = iadd v12, v13 ; v13 = 24 -;; @0020 store user2 little region0 v16, v14 -;; v18 = load.i32 notrap v21 +;; v22 = stack_addr.i64 ss0 +;; store notrap v9, v22 +;; @0020 v16 = call fn1(v0, v2), stack_map=[i32 @ ss0+0] +;; @0020 v17 = ireduce.i32 v16 +;; @0020 v10 = load.i64 notrap aligned readonly can_move v0+8 +;; @0020 v11 = load.i64 notrap aligned readonly can_move v10+32 +;; @0020 v12 = uextend.i64 v9 +;; @0020 v13 = iadd v11, v12 +;; @0020 v14 = iconst.i64 24 +;; @0020 v15 = iadd v13, v14 ; v14 = 24 +;; @0020 store user2 little region0 v17, v15 +;; v19 = load.i32 notrap v22 ;; @0023 jump block1 ;; ;; block1: -;; @0023 return v18 +;; @0023 return v19 ;; } diff --git a/tests/disas/gc/drc/struct-new-default.wat b/tests/disas/gc/drc/struct-new-default.wat index 97eb9b86bc99..c81e678269a5 100644 --- a/tests/disas/gc/drc/struct-new-default.wat +++ b/tests/disas/gc/drc/struct-new-default.wat @@ -32,24 +32,24 @@ ;; @0021 v10 = iconst.i32 8 ;; @0021 v11 = call fn0(v0, v7, v9, v6, v10) ; v7 = -1342177280, v6 = 40, v10 = 8 ;; @0021 v3 = f32const 0.0 -;; @0021 v44 = load.i64 notrap aligned readonly can_move v0+8 -;; @0021 v12 = load.i64 notrap aligned readonly can_move v44+32 -;; @0021 v13 = uextend.i64 v11 -;; @0021 v14 = iadd v12, v13 -;; @0021 v15 = iconst.i64 24 -;; @0021 v16 = iadd v14, v15 ; v15 = 24 -;; @0021 store user2 little region0 v3, v16 ; v3 = 0.0 +;; @0021 v12 = load.i64 notrap aligned readonly can_move v0+8 +;; @0021 v13 = load.i64 notrap aligned readonly can_move v12+32 +;; @0021 v14 = uextend.i64 v11 +;; @0021 v15 = iadd v13, v14 +;; @0021 v16 = iconst.i64 24 +;; @0021 v17 = iadd v15, v16 ; v16 = 24 +;; @0021 store user2 little region0 v3, v17 ; v3 = 0.0 ;; @0021 v4 = iconst.i32 0 -;; @0021 v17 = iconst.i64 28 -;; @0021 v18 = iadd v14, v17 ; v17 = 28 -;; @0021 istore8 user2 little region0 v4, v18 ; v4 = 0 +;; @0021 v18 = iconst.i64 28 +;; @0021 v19 = iadd v15, v18 ; v18 = 28 +;; @0021 istore8 user2 little region0 v4, v19 ; v4 = 0 ;; jump block3 ;; ;; block3: -;; v63 = iconst.i32 0 -;; @0021 v19 = iconst.i64 32 -;; @0021 v20 = iadd.i64 v14, v19 ; v19 = 32 -;; @0021 store user2 little region0 v63, v20 ; v63 = 0 +;; v62 = iconst.i32 0 +;; @0021 v20 = iconst.i64 32 +;; @0021 v21 = iadd.i64 v15, v20 ; v20 = 32 +;; @0021 store user2 little region0 v62, v21 ; v62 = 0 ;; @0024 jump block1 ;; ;; block1: diff --git a/tests/disas/gc/drc/struct-new.wat b/tests/disas/gc/drc/struct-new.wat index 6e37a179758e..5a2e7807dd24 100644 --- a/tests/disas/gc/drc/struct-new.wat +++ b/tests/disas/gc/drc/struct-new.wat @@ -26,48 +26,48 @@ ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: f32, v3: i32, v4: i32): -;; v50 = stack_addr.i64 ss0 -;; store notrap v4, v50 +;; v51 = stack_addr.i64 ss0 +;; store notrap v4, v51 ;; @002a v7 = iconst.i32 -1342177280 ;; @002a v8 = load.i64 notrap aligned readonly can_move v0+40 ;; @002a v9 = load.i32 notrap aligned readonly can_move v8 ;; @002a v6 = iconst.i32 40 ;; @002a v10 = iconst.i32 8 ;; @002a v11 = call fn0(v0, v7, v9, v6, v10), stack_map=[i32 @ ss0+0] ; v7 = -1342177280, v6 = 40, v10 = 8 -;; @002a v55 = load.i64 notrap aligned readonly can_move v0+8 -;; @002a v12 = load.i64 notrap aligned readonly can_move v55+32 -;; @002a v13 = uextend.i64 v11 -;; @002a v14 = iadd v12, v13 -;; @002a v15 = iconst.i64 24 -;; @002a v16 = iadd v14, v15 ; v15 = 24 -;; @002a store user2 little region0 v2, v16 -;; @002a v17 = iconst.i64 28 -;; @002a v18 = iadd v14, v17 ; v17 = 28 -;; @002a istore8 user2 little region0 v3, v18 -;; v49 = load.i32 notrap v50 -;; @002a v21 = iconst.i32 1 -;; @002a v22 = band v49, v21 ; v21 = 1 -;; @002a v23 = iconst.i32 0 -;; @002a v24 = icmp eq v49, v23 ; v23 = 0 -;; @002a v25 = uextend.i32 v24 -;; @002a v26 = bor v22, v25 -;; @002a brif v26, block3, block2 +;; @002a v12 = load.i64 notrap aligned readonly can_move v0+8 +;; @002a v13 = load.i64 notrap aligned readonly can_move v12+32 +;; @002a v14 = uextend.i64 v11 +;; @002a v15 = iadd v13, v14 +;; @002a v16 = iconst.i64 24 +;; @002a v17 = iadd v15, v16 ; v16 = 24 +;; @002a store user2 little region0 v2, v17 +;; @002a v18 = iconst.i64 28 +;; @002a v19 = iadd v15, v18 ; v18 = 28 +;; @002a istore8 user2 little region0 v3, v19 +;; v50 = load.i32 notrap v51 +;; @002a v22 = iconst.i32 1 +;; @002a v23 = band v50, v22 ; v22 = 1 +;; @002a v24 = iconst.i32 0 +;; @002a v25 = icmp eq v50, v24 ; v24 = 0 +;; @002a v26 = uextend.i32 v25 +;; @002a v27 = bor v23, v26 +;; @002a brif v27, block3, block2 ;; ;; block2: -;; @002a v27 = uextend.i64 v49 -;; @002a v29 = iadd.i64 v12, v27 -;; @002a v30 = iconst.i64 8 -;; @002a v31 = iadd v29, v30 ; v30 = 8 -;; @002a v32 = load.i64 user2 region0 v31 -;; @002a v33 = iconst.i64 1 -;; @002a v34 = iadd v32, v33 ; v33 = 1 -;; @002a store user2 region0 v34, v31 +;; @002a v28 = uextend.i64 v50 +;; @002a v30 = iadd.i64 v13, v28 +;; @002a v31 = iconst.i64 8 +;; @002a v32 = iadd v30, v31 ; v31 = 8 +;; @002a v33 = load.i64 user2 region0 v32 +;; @002a v34 = iconst.i64 1 +;; @002a v35 = iadd v33, v34 ; v34 = 1 +;; @002a store user2 region0 v35, v32 ;; @002a jump block3 ;; ;; block3: -;; @002a v19 = iconst.i64 32 -;; @002a v20 = iadd.i64 v14, v19 ; v19 = 32 -;; @002a store.i32 user2 little region0 v49, v20 +;; @002a v20 = iconst.i64 32 +;; @002a v21 = iadd.i64 v15, v20 ; v20 = 32 +;; @002a store.i32 user2 little region0 v50, v21 ;; @002d jump block1 ;; ;; block1: diff --git a/tests/disas/gc/null/array-fill.wat b/tests/disas/gc/null/array-fill.wat index ed51159c6a81..fa42091144c6 100644 --- a/tests/disas/gc/null/array-fill.wat +++ b/tests/disas/gc/null/array-fill.wat @@ -22,8 +22,8 @@ ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32, v4: i64, v5: i32): ;; @0027 trapz v2, user16 -;; @0027 v49 = load.i64 notrap aligned readonly can_move v0+8 -;; @0027 v7 = load.i64 notrap aligned readonly can_move v49+32 +;; @0027 v46 = load.i64 notrap aligned readonly can_move v0+8 +;; @0027 v7 = load.i64 notrap aligned readonly can_move v46+32 ;; @0027 v6 = uextend.i64 v2 ;; @0027 v8 = iadd v7, v6 ;; @0027 v9 = iconst.i64 8 @@ -35,28 +35,28 @@ ;; @0027 v12 = uextend.i64 v11 ;; @0027 v18 = icmp ugt v17, v12 ;; @0027 trapnz v18, user17 -;; @0027 v32 = load.i64 notrap aligned v49+40 -;; @0027 v22 = iconst.i64 16 -;; @0027 v23 = iadd v8, v22 ; v22 = 16 -;; v53 = iconst.i64 3 -;; v54 = ishl v13, v53 ; v53 = 3 -;; @0027 v27 = iadd v23, v54 -;; v56 = ishl v14, v53 ; v53 = 3 -;; @0027 v34 = uadd_overflow_trap v27, v56, user2 -;; @0027 v33 = iadd v7, v32 -;; @0027 v35 = icmp ugt v34, v33 -;; @0027 trapnz v35, user2 -;; v51 = iconst.i64 0 -;; @0027 v38 = icmp eq v14, v51 ; v51 = 0 -;; @0027 v36 = iadd v27, v56 -;; @0027 brif v38, block3, block2(v27) +;; @0027 v35 = load.i64 notrap aligned v46+40 +;; @0027 v23 = iconst.i64 16 +;; @0027 v24 = iadd v8, v23 ; v23 = 16 +;; v50 = iconst.i64 3 +;; v51 = ishl v13, v50 ; v50 = 3 +;; @0027 v28 = iadd v24, v51 +;; v53 = ishl v14, v50 ; v50 = 3 +;; @0027 v37 = uadd_overflow_trap v28, v53, user2 +;; @0027 v36 = iadd v7, v35 +;; @0027 v38 = icmp ugt v37, v36 +;; @0027 trapnz v38, user2 +;; v48 = iconst.i64 0 +;; @0027 v41 = icmp eq v14, v48 ; v48 = 0 +;; @0027 v39 = iadd v28, v53 +;; @0027 brif v41, block3, block2(v28) ;; -;; block2(v39: i64): -;; @0027 store.i64 user2 little region0 v4, v39 -;; v58 = iconst.i64 8 -;; v59 = iadd v39, v58 ; v58 = 8 -;; @0027 v42 = icmp eq v59, v36 -;; @0027 brif v42, block3, block2(v59) +;; block2(v42: i64): +;; @0027 store.i64 user2 little region0 v4, v42 +;; v55 = iconst.i64 8 +;; v56 = iadd v42, v55 ; v55 = 8 +;; @0027 v45 = icmp eq v56, v39 +;; @0027 brif v45, block3, block2(v56) ;; ;; block3: ;; @002a jump block1 diff --git a/tests/disas/gc/null/array-new-fixed-of-gc-refs.wat b/tests/disas/gc/null/array-new-fixed-of-gc-refs.wat index ee559d0b7158..424496eacb20 100644 --- a/tests/disas/gc/null/array-new-fixed-of-gc-refs.wat +++ b/tests/disas/gc/null/array-new-fixed-of-gc-refs.wat @@ -20,106 +20,106 @@ ;; gv2 = load.i64 notrap aligned gv1+24 ;; gv3 = vmctx ;; gv4 = load.i64 notrap aligned readonly can_move gv3+8 -;; gv5 = load.i64 notrap aligned gv4+40 -;; gv6 = load.i64 notrap aligned readonly can_move gv4+32 +;; gv5 = load.i64 notrap aligned readonly can_move gv4+32 +;; gv6 = load.i64 notrap aligned gv4+40 ;; sig0 = (i64 vmctx, i64) -> i8 tail ;; fn0 = colocated u805306368:23 sig0 ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i32, v3: i32, v4: i32): -;; v124 = stack_addr.i64 ss2 -;; store notrap v2, v124 -;; v125 = stack_addr.i64 ss1 -;; store notrap v3, v125 -;; v126 = stack_addr.i64 ss0 -;; store notrap v4, v126 +;; v126 = stack_addr.i64 ss2 +;; store notrap v2, v126 +;; v127 = stack_addr.i64 ss1 +;; store notrap v3, v127 +;; v128 = stack_addr.i64 ss0 +;; store notrap v4, v128 ;; @0025 v18 = load.i64 notrap aligned readonly region0 v0+32 ;; @0025 v19 = load.i32 user2 region1 v18 -;; v160 = iconst.i32 7 -;; @0025 v22 = uadd_overflow_trap v19, v160, user18 ; v160 = 7 -;; v166 = iconst.i32 -8 -;; @0025 v24 = band v22, v166 ; v166 = -8 -;; v153 = iconst.i32 24 -;; @0025 v25 = uadd_overflow_trap v24, v153, user18 ; v153 = 24 -;; @0025 v141 = load.i64 notrap aligned readonly can_move v0+8 -;; @0025 v27 = load.i64 notrap aligned v141+40 +;; v158 = iconst.i32 7 +;; @0025 v22 = uadd_overflow_trap v19, v158, user18 ; v158 = 7 +;; v164 = iconst.i32 -8 +;; @0025 v24 = band v22, v164 ; v164 = -8 +;; v151 = iconst.i32 24 +;; @0025 v25 = uadd_overflow_trap v24, v151, user18 ; v151 = 24 +;; @0025 v27 = load.i64 notrap aligned readonly can_move v0+8 +;; @0025 v28 = load.i64 notrap aligned v27+40 ;; @0025 v26 = uextend.i64 v25 -;; @0025 v28 = icmp ule v26, v27 -;; @0025 brif v28, block2, block3 +;; @0025 v29 = icmp ule v26, v28 +;; @0025 brif v29, block2, block3 ;; ;; block2: -;; v167 = iconst.i32 -1476394984 -;; @0025 v31 = load.i64 notrap aligned readonly can_move v141+32 -;; v265 = band.i32 v22, v166 ; v166 = -8 -;; v266 = uextend.i64 v265 -;; @0025 v33 = iadd v31, v266 -;; @0025 store user2 region1 v167, v33 ; v167 = -1476394984 -;; @0025 v36 = load.i64 notrap aligned readonly can_move v0+40 -;; @0025 v37 = load.i32 notrap aligned readonly can_move v36 -;; @0025 store user2 region1 v37, v33+4 +;; v165 = iconst.i32 -1476394984 +;; @0025 v33 = load.i64 notrap aligned readonly can_move v27+32 +;; v263 = band.i32 v22, v164 ; v164 = -8 +;; v264 = uextend.i64 v263 +;; @0025 v35 = iadd v33, v264 +;; @0025 store user2 region1 v165, v35 ; v165 = -1476394984 +;; @0025 v38 = load.i64 notrap aligned readonly can_move v0+40 +;; @0025 v39 = load.i32 notrap aligned readonly can_move v38 +;; @0025 store user2 region1 v39, v35+4 ;; @0025 store.i32 user2 region1 v25, v18 ;; @0025 v6 = iconst.i32 3 -;; @0025 v38 = iconst.i64 8 -;; @0025 v39 = iadd v33, v38 ; v38 = 8 -;; @0025 store user2 region1 v6, v39 ; v6 = 3 -;; @0025 trapz v265, user16 -;; v267 = iconst.i32 24 -;; @0025 v59 = uadd_overflow_trap v265, v267, user2 ; v267 = 24 -;; v123 = load.i32 notrap v124 -;; @0025 v60 = uextend.i64 v59 -;; @0025 v62 = iadd v31, v60 -;; v144 = iconst.i64 12 -;; @0025 v65 = isub v62, v144 ; v144 = 12 -;; @0025 store user2 little region1 v123, v65 -;; @0025 v72 = load.i32 user2 readonly region1 v39 -;; @0025 v66 = iconst.i32 1 -;; v205 = icmp ugt v72, v66 ; v66 = 1 -;; @0025 trapz v205, user17 -;; @0025 v75 = uextend.i64 v72 -;; v145 = iconst.i64 2 -;; v207 = ishl v75, v145 ; v145 = 2 +;; @0025 v40 = iconst.i64 8 +;; @0025 v41 = iadd v35, v40 ; v40 = 8 +;; @0025 store user2 region1 v6, v41 ; v6 = 3 +;; @0025 trapz v263, user16 +;; v265 = iconst.i32 24 +;; @0025 v61 = uadd_overflow_trap v263, v265, user2 ; v265 = 24 +;; v125 = load.i32 notrap v126 +;; @0025 v62 = uextend.i64 v61 +;; @0025 v64 = iadd v33, v62 +;; v142 = iconst.i64 12 +;; @0025 v67 = isub v64, v142 ; v142 = 12 +;; @0025 store user2 little region1 v125, v67 +;; @0025 v74 = load.i32 user2 readonly region1 v41 +;; @0025 v68 = iconst.i32 1 +;; v203 = icmp ugt v74, v68 ; v68 = 1 +;; @0025 trapz v203, user17 +;; @0025 v77 = uextend.i64 v74 +;; v143 = iconst.i64 2 +;; v205 = ishl v77, v143 ; v143 = 2 ;; @0025 v11 = iconst.i64 32 -;; @0025 v78 = ushr v207, v11 ; v11 = 32 -;; @0025 trapnz v78, user2 -;; v184 = iconst.i32 2 -;; v214 = ishl v72, v184 ; v184 = 2 +;; @0025 v80 = ushr v205, v11 ; v11 = 32 +;; @0025 trapnz v80, user2 +;; v182 = iconst.i32 2 +;; v212 = ishl v74, v182 ; v182 = 2 ;; @0025 v7 = iconst.i32 12 -;; @0025 v81 = uadd_overflow_trap v214, v7, user2 ; v7 = 12 -;; @0025 v85 = uadd_overflow_trap v265, v81, user2 -;; v121 = load.i32 notrap v125 -;; @0025 v86 = uextend.i64 v85 -;; @0025 v88 = iadd v31, v86 -;; v227 = iconst.i32 16 -;; @0025 v89 = isub v81, v227 ; v227 = 16 -;; @0025 v90 = uextend.i64 v89 -;; @0025 v91 = isub v88, v90 -;; @0025 store user2 little region1 v121, v91 -;; @0025 v98 = load.i32 user2 readonly region1 v39 -;; v233 = icmp ugt v98, v184 ; v184 = 2 -;; @0025 trapz v233, user17 -;; @0025 v101 = uextend.i64 v98 -;; v235 = ishl v101, v145 ; v145 = 2 -;; @0025 v104 = ushr v235, v11 ; v11 = 32 -;; @0025 trapnz v104, user2 -;; v242 = ishl v98, v184 ; v184 = 2 -;; @0025 v107 = uadd_overflow_trap v242, v7, user2 ; v7 = 12 -;; @0025 v111 = uadd_overflow_trap v265, v107, user2 -;; v119 = load.i32 notrap v126 -;; @0025 v112 = uextend.i64 v111 -;; @0025 v114 = iadd v31, v112 -;; v259 = iconst.i32 20 -;; @0025 v115 = isub v107, v259 ; v259 = 20 -;; @0025 v116 = uextend.i64 v115 -;; @0025 v117 = isub v114, v116 -;; @0025 store user2 little region1 v119, v117 +;; @0025 v83 = uadd_overflow_trap v212, v7, user2 ; v7 = 12 +;; @0025 v87 = uadd_overflow_trap v263, v83, user2 +;; v123 = load.i32 notrap v127 +;; @0025 v88 = uextend.i64 v87 +;; @0025 v90 = iadd v33, v88 +;; v225 = iconst.i32 16 +;; @0025 v91 = isub v83, v225 ; v225 = 16 +;; @0025 v92 = uextend.i64 v91 +;; @0025 v93 = isub v90, v92 +;; @0025 store user2 little region1 v123, v93 +;; @0025 v100 = load.i32 user2 readonly region1 v41 +;; v231 = icmp ugt v100, v182 ; v182 = 2 +;; @0025 trapz v231, user17 +;; @0025 v103 = uextend.i64 v100 +;; v233 = ishl v103, v143 ; v143 = 2 +;; @0025 v106 = ushr v233, v11 ; v11 = 32 +;; @0025 trapnz v106, user2 +;; v240 = ishl v100, v182 ; v182 = 2 +;; @0025 v109 = uadd_overflow_trap v240, v7, user2 ; v7 = 12 +;; @0025 v113 = uadd_overflow_trap v263, v109, user2 +;; v121 = load.i32 notrap v128 +;; @0025 v114 = uextend.i64 v113 +;; @0025 v116 = iadd v33, v114 +;; v257 = iconst.i32 20 +;; @0025 v117 = isub v109, v257 ; v257 = 20 +;; @0025 v118 = uextend.i64 v117 +;; @0025 v119 = isub v116, v118 +;; @0025 store user2 little region1 v121, v119 ;; @0029 jump block1 ;; ;; block3 cold: -;; @0025 v29 = isub.i64 v26, v27 -;; @0025 v30 = call fn0(v0, v29), stack_map=[i32 @ ss2+0, i32 @ ss1+0, i32 @ ss0+0] +;; @0025 v30 = isub.i64 v26, v28 +;; @0025 v31 = call fn0(v0, v30), stack_map=[i32 @ ss2+0, i32 @ ss1+0, i32 @ ss0+0] ;; @0025 jump block2 ;; ;; block1: -;; v268 = band.i32 v22, v166 ; v166 = -8 -;; @0029 return v268 +;; v266 = band.i32 v22, v164 ; v164 = -8 +;; @0029 return v266 ;; } diff --git a/tests/disas/gc/null/array-new-fixed.wat b/tests/disas/gc/null/array-new-fixed.wat index 5b5d32795a17..887ce397ec54 100644 --- a/tests/disas/gc/null/array-new-fixed.wat +++ b/tests/disas/gc/null/array-new-fixed.wat @@ -17,8 +17,8 @@ ;; gv2 = load.i64 notrap aligned gv1+24 ;; gv3 = vmctx ;; gv4 = load.i64 notrap aligned readonly can_move gv3+8 -;; gv5 = load.i64 notrap aligned gv4+40 -;; gv6 = load.i64 notrap aligned readonly can_move gv4+32 +;; gv5 = load.i64 notrap aligned readonly can_move gv4+32 +;; gv6 = load.i64 notrap aligned gv4+40 ;; sig0 = (i64 vmctx, i64) -> i8 tail ;; fn0 = colocated u805306368:23 sig0 ;; stack_limit = gv2 @@ -26,88 +26,88 @@ ;; block0(v0: i64, v1: i64, v2: i64, v3: i64, v4: i64): ;; @0025 v18 = load.i64 notrap aligned readonly region0 v0+32 ;; @0025 v19 = load.i32 user2 region1 v18 -;; v151 = iconst.i32 7 -;; @0025 v22 = uadd_overflow_trap v19, v151, user18 ; v151 = 7 -;; v157 = iconst.i32 -8 -;; @0025 v24 = band v22, v157 ; v157 = -8 -;; v144 = iconst.i32 40 -;; @0025 v25 = uadd_overflow_trap v24, v144, user18 ; v144 = 40 -;; @0025 v132 = load.i64 notrap aligned readonly can_move v0+8 -;; @0025 v27 = load.i64 notrap aligned v132+40 +;; v149 = iconst.i32 7 +;; @0025 v22 = uadd_overflow_trap v19, v149, user18 ; v149 = 7 +;; v155 = iconst.i32 -8 +;; @0025 v24 = band v22, v155 ; v155 = -8 +;; v142 = iconst.i32 40 +;; @0025 v25 = uadd_overflow_trap v24, v142, user18 ; v142 = 40 +;; @0025 v27 = load.i64 notrap aligned readonly can_move v0+8 +;; @0025 v28 = load.i64 notrap aligned v27+40 ;; @0025 v26 = uextend.i64 v25 -;; @0025 v28 = icmp ule v26, v27 -;; @0025 brif v28, block2, block3 +;; @0025 v29 = icmp ule v26, v28 +;; @0025 brif v29, block2, block3 ;; ;; block2: -;; v158 = iconst.i32 -1476394968 -;; @0025 v31 = load.i64 notrap aligned readonly can_move v132+32 -;; v253 = band.i32 v22, v157 ; v157 = -8 -;; v254 = uextend.i64 v253 -;; @0025 v33 = iadd v31, v254 -;; @0025 store user2 region1 v158, v33 ; v158 = -1476394968 -;; @0025 v36 = load.i64 notrap aligned readonly can_move v0+40 -;; @0025 v37 = load.i32 notrap aligned readonly can_move v36 -;; @0025 store user2 region1 v37, v33+4 +;; v156 = iconst.i32 -1476394968 +;; @0025 v33 = load.i64 notrap aligned readonly can_move v27+32 +;; v251 = band.i32 v22, v155 ; v155 = -8 +;; v252 = uextend.i64 v251 +;; @0025 v35 = iadd v33, v252 +;; @0025 store user2 region1 v156, v35 ; v156 = -1476394968 +;; @0025 v38 = load.i64 notrap aligned readonly can_move v0+40 +;; @0025 v39 = load.i32 notrap aligned readonly can_move v38 +;; @0025 store user2 region1 v39, v35+4 ;; @0025 store.i32 user2 region1 v25, v18 ;; @0025 v6 = iconst.i32 3 ;; @0025 v9 = iconst.i64 8 -;; @0025 v39 = iadd v33, v9 ; v9 = 8 -;; @0025 store user2 region1 v6, v39 ; v6 = 3 -;; @0025 trapz v253, user16 -;; v255 = iconst.i32 40 -;; @0025 v59 = uadd_overflow_trap v253, v255, user2 ; v255 = 40 -;; @0025 v60 = uextend.i64 v59 -;; @0025 v62 = iadd v31, v60 -;; v135 = iconst.i64 24 -;; @0025 v65 = isub v62, v135 ; v135 = 24 -;; @0025 store.i64 user2 little region1 v2, v65 -;; @0025 v72 = load.i32 user2 readonly region1 v39 -;; @0025 v66 = iconst.i32 1 -;; v194 = icmp ugt v72, v66 ; v66 = 1 -;; @0025 trapz v194, user17 -;; @0025 v75 = uextend.i64 v72 -;; v134 = iconst.i64 3 -;; v196 = ishl v75, v134 ; v134 = 3 +;; @0025 v41 = iadd v35, v9 ; v9 = 8 +;; @0025 store user2 region1 v6, v41 ; v6 = 3 +;; @0025 trapz v251, user16 +;; v253 = iconst.i32 40 +;; @0025 v61 = uadd_overflow_trap v251, v253, user2 ; v253 = 40 +;; @0025 v62 = uextend.i64 v61 +;; @0025 v64 = iadd v33, v62 +;; v133 = iconst.i64 24 +;; @0025 v67 = isub v64, v133 ; v133 = 24 +;; @0025 store.i64 user2 little region1 v2, v67 +;; @0025 v74 = load.i32 user2 readonly region1 v41 +;; @0025 v68 = iconst.i32 1 +;; v192 = icmp ugt v74, v68 ; v68 = 1 +;; @0025 trapz v192, user17 +;; @0025 v77 = uextend.i64 v74 +;; v132 = iconst.i64 3 +;; v194 = ishl v77, v132 ; v132 = 3 ;; @0025 v11 = iconst.i64 32 -;; @0025 v78 = ushr v196, v11 ; v11 = 32 -;; @0025 trapnz v78, user2 -;; v203 = ishl v72, v6 ; v6 = 3 +;; @0025 v80 = ushr v194, v11 ; v11 = 32 +;; @0025 trapnz v80, user2 +;; v201 = ishl v74, v6 ; v6 = 3 ;; @0025 v7 = iconst.i32 16 -;; @0025 v81 = uadd_overflow_trap v203, v7, user2 ; v7 = 16 -;; @0025 v85 = uadd_overflow_trap v253, v81, user2 -;; @0025 v86 = uextend.i64 v85 -;; @0025 v88 = iadd v31, v86 -;; v143 = iconst.i32 24 -;; @0025 v89 = isub v81, v143 ; v143 = 24 -;; @0025 v90 = uextend.i64 v89 -;; @0025 v91 = isub v88, v90 -;; @0025 store.i64 user2 little region1 v3, v91 -;; @0025 v98 = load.i32 user2 readonly region1 v39 -;; @0025 v92 = iconst.i32 2 -;; v221 = icmp ugt v98, v92 ; v92 = 2 -;; @0025 trapz v221, user17 -;; @0025 v101 = uextend.i64 v98 -;; v223 = ishl v101, v134 ; v134 = 3 -;; @0025 v104 = ushr v223, v11 ; v11 = 32 -;; @0025 trapnz v104, user2 -;; v230 = ishl v98, v6 ; v6 = 3 -;; @0025 v107 = uadd_overflow_trap v230, v7, user2 ; v7 = 16 -;; @0025 v111 = uadd_overflow_trap v253, v107, user2 -;; @0025 v112 = uextend.i64 v111 -;; @0025 v114 = iadd v31, v112 -;; v247 = iconst.i32 32 -;; @0025 v115 = isub v107, v247 ; v247 = 32 -;; @0025 v116 = uextend.i64 v115 -;; @0025 v117 = isub v114, v116 -;; @0025 store.i64 user2 little region1 v4, v117 +;; @0025 v83 = uadd_overflow_trap v201, v7, user2 ; v7 = 16 +;; @0025 v87 = uadd_overflow_trap v251, v83, user2 +;; @0025 v88 = uextend.i64 v87 +;; @0025 v90 = iadd v33, v88 +;; v141 = iconst.i32 24 +;; @0025 v91 = isub v83, v141 ; v141 = 24 +;; @0025 v92 = uextend.i64 v91 +;; @0025 v93 = isub v90, v92 +;; @0025 store.i64 user2 little region1 v3, v93 +;; @0025 v100 = load.i32 user2 readonly region1 v41 +;; @0025 v94 = iconst.i32 2 +;; v219 = icmp ugt v100, v94 ; v94 = 2 +;; @0025 trapz v219, user17 +;; @0025 v103 = uextend.i64 v100 +;; v221 = ishl v103, v132 ; v132 = 3 +;; @0025 v106 = ushr v221, v11 ; v11 = 32 +;; @0025 trapnz v106, user2 +;; v228 = ishl v100, v6 ; v6 = 3 +;; @0025 v109 = uadd_overflow_trap v228, v7, user2 ; v7 = 16 +;; @0025 v113 = uadd_overflow_trap v251, v109, user2 +;; @0025 v114 = uextend.i64 v113 +;; @0025 v116 = iadd v33, v114 +;; v245 = iconst.i32 32 +;; @0025 v117 = isub v109, v245 ; v245 = 32 +;; @0025 v118 = uextend.i64 v117 +;; @0025 v119 = isub v116, v118 +;; @0025 store.i64 user2 little region1 v4, v119 ;; @0029 jump block1 ;; ;; block3 cold: -;; @0025 v29 = isub.i64 v26, v27 -;; @0025 v30 = call fn0(v0, v29) +;; @0025 v30 = isub.i64 v26, v28 +;; @0025 v31 = call fn0(v0, v30) ;; @0025 jump block2 ;; ;; block1: -;; v256 = band.i32 v22, v157 ; v157 = -8 -;; @0029 return v256 +;; v254 = band.i32 v22, v155 ; v155 = -8 +;; @0029 return v254 ;; } diff --git a/tests/disas/gc/null/array-new.wat b/tests/disas/gc/null/array-new.wat index 8505d0216262..a5a1744e942a 100644 --- a/tests/disas/gc/null/array-new.wat +++ b/tests/disas/gc/null/array-new.wat @@ -17,83 +17,83 @@ ;; gv2 = load.i64 notrap aligned gv1+24 ;; gv3 = vmctx ;; gv4 = load.i64 notrap aligned readonly can_move gv3+8 -;; gv5 = load.i64 notrap aligned gv4+40 -;; gv6 = load.i64 notrap aligned readonly can_move gv4+32 +;; gv5 = load.i64 notrap aligned readonly can_move gv4+32 +;; gv6 = load.i64 notrap aligned gv4+40 ;; sig0 = (i64 vmctx, i64) -> i8 tail ;; fn0 = colocated u805306368:23 sig0 ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: i64, v3: i32): ;; @0022 v6 = uextend.i64 v3 -;; v88 = iconst.i64 3 -;; v89 = ishl v6, v88 ; v88 = 3 +;; v83 = iconst.i64 3 +;; v84 = ishl v6, v83 ; v83 = 3 ;; @0022 v9 = iconst.i64 32 -;; @0022 v10 = ushr v89, v9 ; v9 = 32 +;; @0022 v10 = ushr v84, v9 ; v9 = 32 ;; @0022 trapnz v10, user18 ;; @0022 v5 = iconst.i32 16 -;; v95 = iconst.i32 3 -;; v96 = ishl v3, v95 ; v95 = 3 -;; @0022 v12 = uadd_overflow_trap v5, v96, user18 ; v5 = 16 +;; v90 = iconst.i32 3 +;; v91 = ishl v3, v90 ; v90 = 3 +;; @0022 v12 = uadd_overflow_trap v5, v91, user18 ; v5 = 16 ;; @0022 v14 = iconst.i32 -67108864 ;; @0022 v15 = band v12, v14 ; v14 = -67108864 ;; @0022 trapnz v15, user18 ;; @0022 v16 = load.i64 notrap aligned readonly region0 v0+32 ;; @0022 v17 = load.i32 user2 region1 v16 -;; v99 = iconst.i32 7 -;; @0022 v20 = uadd_overflow_trap v17, v99, user18 ; v99 = 7 -;; v105 = iconst.i32 -8 -;; @0022 v22 = band v20, v105 ; v105 = -8 +;; v94 = iconst.i32 7 +;; @0022 v20 = uadd_overflow_trap v17, v94, user18 ; v94 = 7 +;; v100 = iconst.i32 -8 +;; @0022 v22 = band v20, v100 ; v100 = -8 ;; @0022 v23 = uadd_overflow_trap v22, v12, user18 -;; @0022 v86 = load.i64 notrap aligned readonly can_move v0+8 -;; @0022 v25 = load.i64 notrap aligned v86+40 +;; @0022 v25 = load.i64 notrap aligned readonly can_move v0+8 +;; @0022 v26 = load.i64 notrap aligned v25+40 ;; @0022 v24 = uextend.i64 v23 -;; @0022 v26 = icmp ule v24, v25 -;; @0022 brif v26, block2, block3 +;; @0022 v27 = icmp ule v24, v26 +;; @0022 brif v27, block2, block3 ;; ;; block2: -;; @0022 v32 = iconst.i32 -1476395008 -;; v106 = bor.i32 v12, v32 ; v32 = -1476395008 -;; @0022 v29 = load.i64 notrap aligned readonly can_move v86+32 -;; v123 = band.i32 v20, v105 ; v105 = -8 -;; v124 = uextend.i64 v123 -;; @0022 v31 = iadd v29, v124 -;; @0022 store user2 region1 v106, v31 -;; @0022 v34 = load.i64 notrap aligned readonly can_move v0+40 -;; @0022 v35 = load.i32 notrap aligned readonly can_move v34 -;; @0022 store user2 region1 v35, v31+4 +;; @0022 v34 = iconst.i32 -1476395008 +;; v101 = bor.i32 v12, v34 ; v34 = -1476395008 +;; @0022 v31 = load.i64 notrap aligned readonly can_move v25+32 +;; v118 = band.i32 v20, v100 ; v100 = -8 +;; v119 = uextend.i64 v118 +;; @0022 v33 = iadd v31, v119 +;; @0022 store user2 region1 v101, v33 +;; @0022 v36 = load.i64 notrap aligned readonly can_move v0+40 +;; @0022 v37 = load.i32 notrap aligned readonly can_move v36 +;; @0022 store user2 region1 v37, v33+4 ;; @0022 store.i32 user2 region1 v23, v16 ;; @0022 v7 = iconst.i64 8 -;; @0022 v37 = iadd v31, v7 ; v7 = 8 -;; @0022 store.i32 user2 region1 v3, v37 -;; @0022 trapz v123, user16 -;; @0022 v65 = load.i64 notrap aligned v86+40 -;; @0022 v55 = iconst.i64 16 -;; @0022 v56 = iadd v31, v55 ; v55 = 16 -;; @0022 v67 = uadd_overflow_trap v56, v89, user2 -;; @0022 v66 = iadd v29, v65 -;; @0022 v68 = icmp ugt v67, v66 -;; @0022 trapnz v68, user2 -;; v108 = iconst.i64 0 -;; @0022 v71 = icmp.i64 eq v6, v108 ; v108 = 0 -;; @0022 v69 = iadd v56, v89 -;; @0022 brif v71, block5, block4(v56) +;; @0022 v39 = iadd v33, v7 ; v7 = 8 +;; @0022 store.i32 user2 region1 v3, v39 +;; @0022 trapz v118, user16 +;; @0022 v70 = load.i64 notrap aligned v25+40 +;; @0022 v58 = iconst.i64 16 +;; @0022 v59 = iadd v33, v58 ; v58 = 16 +;; @0022 v72 = uadd_overflow_trap v59, v84, user2 +;; @0022 v71 = iadd v31, v70 +;; @0022 v73 = icmp ugt v72, v71 +;; @0022 trapnz v73, user2 +;; v103 = iconst.i64 0 +;; @0022 v76 = icmp.i64 eq v6, v103 ; v103 = 0 +;; @0022 v74 = iadd v59, v84 +;; @0022 brif v76, block5, block4(v59) ;; -;; block4(v72: i64): -;; @0022 store.i64 user2 little region1 v2, v72 -;; v125 = iconst.i64 8 -;; v126 = iadd v72, v125 ; v125 = 8 -;; @0022 v75 = icmp eq v126, v69 -;; @0022 brif v75, block5, block4(v126) +;; block4(v77: i64): +;; @0022 store.i64 user2 little region1 v2, v77 +;; v120 = iconst.i64 8 +;; v121 = iadd v77, v120 ; v120 = 8 +;; @0022 v80 = icmp eq v121, v74 +;; @0022 brif v80, block5, block4(v121) ;; ;; block5: ;; @0025 jump block1 ;; ;; block3 cold: -;; @0022 v27 = isub.i64 v24, v25 -;; @0022 v28 = call fn0(v0, v27) +;; @0022 v28 = isub.i64 v24, v26 +;; @0022 v29 = call fn0(v0, v28) ;; @0022 jump block2 ;; ;; block1: -;; v127 = band.i32 v20, v105 ; v105 = -8 -;; @0025 return v127 +;; v122 = band.i32 v20, v100 ; v100 = -8 +;; @0025 return v122 ;; } diff --git a/tests/disas/gc/null/funcref-in-gc-heap-new.wat b/tests/disas/gc/null/funcref-in-gc-heap-new.wat index 731be42086e8..a65bc170dd69 100644 --- a/tests/disas/gc/null/funcref-in-gc-heap-new.wat +++ b/tests/disas/gc/null/funcref-in-gc-heap-new.wat @@ -15,10 +15,6 @@ ;; gv0 = vmctx ;; gv1 = load.i64 notrap aligned readonly gv0+8 ;; gv2 = load.i64 notrap aligned gv1+24 -;; gv3 = vmctx -;; gv4 = load.i64 notrap aligned readonly can_move gv3+8 -;; gv5 = load.i64 notrap aligned gv4+40 -;; gv6 = load.i64 notrap aligned readonly can_move gv4+32 ;; sig0 = (i64 vmctx, i64) -> i8 tail ;; sig1 = (i64 vmctx, i64) -> i64 tail ;; fn0 = colocated u805306368:23 sig0 @@ -28,42 +24,42 @@ ;; block0(v0: i64, v1: i64, v2: i64): ;; @0020 v8 = load.i64 notrap aligned readonly region0 v0+32 ;; @0020 v9 = load.i32 user2 region1 v8 -;; v42 = iconst.i32 7 -;; @0020 v12 = uadd_overflow_trap v9, v42, user18 ; v42 = 7 -;; v48 = iconst.i32 -8 -;; @0020 v14 = band v12, v48 ; v48 = -8 +;; v40 = iconst.i32 7 +;; @0020 v12 = uadd_overflow_trap v9, v40, user18 ; v40 = 7 +;; v46 = iconst.i32 -8 +;; @0020 v14 = band v12, v46 ; v46 = -8 ;; @0020 v4 = iconst.i32 16 ;; @0020 v15 = uadd_overflow_trap v14, v4, user18 ; v4 = 16 -;; @0020 v34 = load.i64 notrap aligned readonly can_move v0+8 -;; @0020 v17 = load.i64 notrap aligned v34+40 +;; @0020 v17 = load.i64 notrap aligned readonly can_move v0+8 +;; @0020 v18 = load.i64 notrap aligned v17+40 ;; @0020 v16 = uextend.i64 v15 -;; @0020 v18 = icmp ule v16, v17 -;; @0020 brif v18, block2, block3 +;; @0020 v19 = icmp ule v16, v18 +;; @0020 brif v19, block2, block3 ;; ;; block2: -;; v49 = iconst.i32 -1342177264 -;; @0020 v21 = load.i64 notrap aligned readonly can_move v34+32 -;; v55 = band.i32 v12, v48 ; v48 = -8 -;; v56 = uextend.i64 v55 -;; @0020 v23 = iadd v21, v56 -;; @0020 store user2 region1 v49, v23 ; v49 = -1342177264 -;; @0020 v26 = load.i64 notrap aligned readonly can_move v0+40 -;; @0020 v27 = load.i32 notrap aligned readonly can_move v26 -;; @0020 store user2 region1 v27, v23+4 +;; v47 = iconst.i32 -1342177264 +;; @0020 v23 = load.i64 notrap aligned readonly can_move v17+32 +;; v53 = band.i32 v12, v46 ; v46 = -8 +;; v54 = uextend.i64 v53 +;; @0020 v25 = iadd v23, v54 +;; @0020 store user2 region1 v47, v25 ; v47 = -1342177264 +;; @0020 v28 = load.i64 notrap aligned readonly can_move v0+40 +;; @0020 v29 = load.i32 notrap aligned readonly can_move v28 +;; @0020 store user2 region1 v29, v25+4 ;; @0020 store.i32 user2 region1 v15, v8 -;; @0020 v30 = call fn1(v0, v2) -;; @0020 v31 = ireduce.i32 v30 -;; @0020 v28 = iconst.i64 8 -;; @0020 v29 = iadd v23, v28 ; v28 = 8 -;; @0020 store user2 little region1 v31, v29 +;; @0020 v32 = call fn1(v0, v2) +;; @0020 v33 = ireduce.i32 v32 +;; @0020 v30 = iconst.i64 8 +;; @0020 v31 = iadd v25, v30 ; v30 = 8 +;; @0020 store user2 little region1 v33, v31 ;; @0023 jump block1 ;; ;; block3 cold: -;; @0020 v19 = isub.i64 v16, v17 -;; @0020 v20 = call fn0(v0, v19) +;; @0020 v20 = isub.i64 v16, v18 +;; @0020 v21 = call fn0(v0, v20) ;; @0020 jump block2 ;; ;; block1: -;; v57 = band.i32 v12, v48 ; v48 = -8 -;; @0023 return v57 +;; v55 = band.i32 v12, v46 ; v46 = -8 +;; @0023 return v55 ;; } diff --git a/tests/disas/gc/null/struct-new-default.wat b/tests/disas/gc/null/struct-new-default.wat index 1e10377f5b40..93b7b2ed693f 100644 --- a/tests/disas/gc/null/struct-new-default.wat +++ b/tests/disas/gc/null/struct-new-default.wat @@ -17,10 +17,6 @@ ;; gv0 = vmctx ;; gv1 = load.i64 notrap aligned readonly gv0+8 ;; gv2 = load.i64 notrap aligned gv1+24 -;; gv3 = vmctx -;; gv4 = load.i64 notrap aligned readonly can_move gv3+8 -;; gv5 = load.i64 notrap aligned gv4+40 -;; gv6 = load.i64 notrap aligned readonly can_move gv4+32 ;; sig0 = (i64 vmctx, i64) -> i8 tail ;; fn0 = colocated u805306368:23 sig0 ;; stack_limit = gv2 @@ -28,48 +24,48 @@ ;; block0(v0: i64, v1: i64): ;; @0021 v10 = load.i64 notrap aligned readonly region0 v0+32 ;; @0021 v11 = load.i32 user2 region1 v10 -;; v45 = iconst.i32 7 -;; @0021 v14 = uadd_overflow_trap v11, v45, user18 ; v45 = 7 -;; v51 = iconst.i32 -8 -;; @0021 v16 = band v14, v51 ; v51 = -8 +;; v43 = iconst.i32 7 +;; @0021 v14 = uadd_overflow_trap v11, v43, user18 ; v43 = 7 +;; v49 = iconst.i32 -8 +;; @0021 v16 = band v14, v49 ; v49 = -8 ;; @0021 v6 = iconst.i32 24 ;; @0021 v17 = uadd_overflow_trap v16, v6, user18 ; v6 = 24 -;; @0021 v38 = load.i64 notrap aligned readonly can_move v0+8 -;; @0021 v19 = load.i64 notrap aligned v38+40 +;; @0021 v19 = load.i64 notrap aligned readonly can_move v0+8 +;; @0021 v20 = load.i64 notrap aligned v19+40 ;; @0021 v18 = uextend.i64 v17 -;; @0021 v20 = icmp ule v18, v19 -;; @0021 brif v20, block2, block3 +;; @0021 v21 = icmp ule v18, v20 +;; @0021 brif v21, block2, block3 ;; ;; block2: -;; v52 = iconst.i32 -1342177256 -;; @0021 v23 = load.i64 notrap aligned readonly can_move v38+32 -;; v58 = band.i32 v14, v51 ; v51 = -8 -;; v59 = uextend.i64 v58 -;; @0021 v25 = iadd v23, v59 -;; @0021 store user2 region1 v52, v25 ; v52 = -1342177256 -;; @0021 v28 = load.i64 notrap aligned readonly can_move v0+40 -;; @0021 v29 = load.i32 notrap aligned readonly can_move v28 -;; @0021 store user2 region1 v29, v25+4 +;; v50 = iconst.i32 -1342177256 +;; @0021 v25 = load.i64 notrap aligned readonly can_move v19+32 +;; v56 = band.i32 v14, v49 ; v49 = -8 +;; v57 = uextend.i64 v56 +;; @0021 v27 = iadd v25, v57 +;; @0021 store user2 region1 v50, v27 ; v50 = -1342177256 +;; @0021 v30 = load.i64 notrap aligned readonly can_move v0+40 +;; @0021 v31 = load.i32 notrap aligned readonly can_move v30 +;; @0021 store user2 region1 v31, v27+4 ;; @0021 store.i32 user2 region1 v17, v10 ;; @0021 v3 = f32const 0.0 -;; @0021 v30 = iconst.i64 8 -;; @0021 v31 = iadd v25, v30 ; v30 = 8 -;; @0021 store user2 little region1 v3, v31 ; v3 = 0.0 +;; @0021 v32 = iconst.i64 8 +;; @0021 v33 = iadd v27, v32 ; v32 = 8 +;; @0021 store user2 little region1 v3, v33 ; v3 = 0.0 ;; @0021 v4 = iconst.i32 0 -;; @0021 v32 = iconst.i64 12 -;; @0021 v33 = iadd v25, v32 ; v32 = 12 -;; @0021 istore8 user2 little region1 v4, v33 ; v4 = 0 -;; @0021 v34 = iconst.i64 16 -;; @0021 v35 = iadd v25, v34 ; v34 = 16 -;; @0021 store user2 little region1 v4, v35 ; v4 = 0 +;; @0021 v34 = iconst.i64 12 +;; @0021 v35 = iadd v27, v34 ; v34 = 12 +;; @0021 istore8 user2 little region1 v4, v35 ; v4 = 0 +;; @0021 v36 = iconst.i64 16 +;; @0021 v37 = iadd v27, v36 ; v36 = 16 +;; @0021 store user2 little region1 v4, v37 ; v4 = 0 ;; @0024 jump block1 ;; ;; block3 cold: -;; @0021 v21 = isub.i64 v18, v19 -;; @0021 v22 = call fn0(v0, v21) +;; @0021 v22 = isub.i64 v18, v20 +;; @0021 v23 = call fn0(v0, v22) ;; @0021 jump block2 ;; ;; block1: -;; v60 = band.i32 v14, v51 ; v51 = -8 -;; @0024 return v60 +;; v58 = band.i32 v14, v49 ; v49 = -8 +;; @0024 return v58 ;; } diff --git a/tests/disas/gc/null/struct-new.wat b/tests/disas/gc/null/struct-new.wat index cf7cf6052db4..4220c312ade5 100644 --- a/tests/disas/gc/null/struct-new.wat +++ b/tests/disas/gc/null/struct-new.wat @@ -18,60 +18,56 @@ ;; gv0 = vmctx ;; gv1 = load.i64 notrap aligned readonly gv0+8 ;; gv2 = load.i64 notrap aligned gv1+24 -;; gv3 = vmctx -;; gv4 = load.i64 notrap aligned readonly can_move gv3+8 -;; gv5 = load.i64 notrap aligned gv4+40 -;; gv6 = load.i64 notrap aligned readonly can_move gv4+32 ;; sig0 = (i64 vmctx, i64) -> i8 tail ;; fn0 = colocated u805306368:23 sig0 ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: f32, v3: i32, v4: i32): -;; v38 = stack_addr.i64 ss0 -;; store notrap v4, v38 +;; v40 = stack_addr.i64 ss0 +;; store notrap v4, v40 ;; @002a v10 = load.i64 notrap aligned readonly region0 v0+32 ;; @002a v11 = load.i32 user2 region1 v10 -;; v49 = iconst.i32 7 -;; @002a v14 = uadd_overflow_trap v11, v49, user18 ; v49 = 7 -;; v55 = iconst.i32 -8 -;; @002a v16 = band v14, v55 ; v55 = -8 +;; v47 = iconst.i32 7 +;; @002a v14 = uadd_overflow_trap v11, v47, user18 ; v47 = 7 +;; v53 = iconst.i32 -8 +;; @002a v16 = band v14, v53 ; v53 = -8 ;; @002a v6 = iconst.i32 24 ;; @002a v17 = uadd_overflow_trap v16, v6, user18 ; v6 = 24 -;; @002a v41 = load.i64 notrap aligned readonly can_move v0+8 -;; @002a v19 = load.i64 notrap aligned v41+40 +;; @002a v19 = load.i64 notrap aligned readonly can_move v0+8 +;; @002a v20 = load.i64 notrap aligned v19+40 ;; @002a v18 = uextend.i64 v17 -;; @002a v20 = icmp ule v18, v19 -;; @002a brif v20, block2, block3 +;; @002a v21 = icmp ule v18, v20 +;; @002a brif v21, block2, block3 ;; ;; block2: -;; v56 = iconst.i32 -1342177256 -;; @002a v23 = load.i64 notrap aligned readonly can_move v41+32 -;; v62 = band.i32 v14, v55 ; v55 = -8 -;; v63 = uextend.i64 v62 -;; @002a v25 = iadd v23, v63 -;; @002a store user2 region1 v56, v25 ; v56 = -1342177256 -;; @002a v28 = load.i64 notrap aligned readonly can_move v0+40 -;; @002a v29 = load.i32 notrap aligned readonly can_move v28 -;; @002a store user2 region1 v29, v25+4 +;; v54 = iconst.i32 -1342177256 +;; @002a v25 = load.i64 notrap aligned readonly can_move v19+32 +;; v60 = band.i32 v14, v53 ; v53 = -8 +;; v61 = uextend.i64 v60 +;; @002a v27 = iadd v25, v61 +;; @002a store user2 region1 v54, v27 ; v54 = -1342177256 +;; @002a v30 = load.i64 notrap aligned readonly can_move v0+40 +;; @002a v31 = load.i32 notrap aligned readonly can_move v30 +;; @002a store user2 region1 v31, v27+4 ;; @002a store.i32 user2 region1 v17, v10 -;; @002a v30 = iconst.i64 8 -;; @002a v31 = iadd v25, v30 ; v30 = 8 -;; @002a store.f32 user2 little region1 v2, v31 -;; @002a v32 = iconst.i64 12 -;; @002a v33 = iadd v25, v32 ; v32 = 12 -;; @002a istore8.i32 user2 little region1 v3, v33 -;; v37 = load.i32 notrap v38 -;; @002a v34 = iconst.i64 16 -;; @002a v35 = iadd v25, v34 ; v34 = 16 -;; @002a store user2 little region1 v37, v35 +;; @002a v32 = iconst.i64 8 +;; @002a v33 = iadd v27, v32 ; v32 = 8 +;; @002a store.f32 user2 little region1 v2, v33 +;; @002a v34 = iconst.i64 12 +;; @002a v35 = iadd v27, v34 ; v34 = 12 +;; @002a istore8.i32 user2 little region1 v3, v35 +;; v39 = load.i32 notrap v40 +;; @002a v36 = iconst.i64 16 +;; @002a v37 = iadd v27, v36 ; v36 = 16 +;; @002a store user2 little region1 v39, v37 ;; @002d jump block1 ;; ;; block3 cold: -;; @002a v21 = isub.i64 v18, v19 -;; @002a v22 = call fn0(v0, v21), stack_map=[i32 @ ss0+0] +;; @002a v22 = isub.i64 v18, v20 +;; @002a v23 = call fn0(v0, v22), stack_map=[i32 @ ss0+0] ;; @002a jump block2 ;; ;; block1: -;; v64 = band.i32 v14, v55 ; v55 = -8 -;; @002d return v64 +;; v62 = band.i32 v14, v53 ; v53 = -8 +;; @002d return v62 ;; } diff --git a/tests/disas/gc/struct-new-default.wat b/tests/disas/gc/struct-new-default.wat index d600154398b1..686a83922dbb 100644 --- a/tests/disas/gc/struct-new-default.wat +++ b/tests/disas/gc/struct-new-default.wat @@ -18,9 +18,6 @@ ;; gv0 = vmctx ;; gv1 = load.i64 notrap aligned readonly gv0+8 ;; gv2 = load.i64 notrap aligned gv1+24 -;; gv3 = vmctx -;; gv4 = load.i64 notrap aligned readonly can_move gv3+8 -;; gv5 = load.i64 notrap aligned readonly can_move gv4+32 ;; sig0 = (i64 vmctx, i32, i32, i32, i32) -> i32 tail ;; fn0 = colocated u805306368:24 sig0 ;; const0 = 0x00000000000000000000000000000000 @@ -31,27 +28,27 @@ ;; @0023 v9 = load.i32 notrap aligned v8 ;; @0023 v10 = load.i32 notrap aligned v8+4 ;; @0023 v16 = uextend.i64 v9 -;; v49 = iconst.i64 48 -;; @0023 v17 = iadd v16, v49 ; v49 = 48 +;; v47 = iconst.i64 48 +;; @0023 v17 = iadd v16, v47 ; v47 = 48 ;; @0023 v18 = uextend.i64 v10 ;; @0023 v19 = icmp ule v17, v18 ;; @0023 brif v19, block2, block3 ;; ;; block2: -;; v65 = iconst.i32 48 -;; v63 = iadd.i32 v9, v65 ; v65 = 48 -;; @0023 store notrap aligned region0 v63, v8 -;; v66 = iconst.i32 -1342177246 -;; v67 = load.i64 notrap aligned readonly can_move v0+8 -;; v68 = load.i64 notrap aligned readonly can_move v67+32 -;; @0023 v31 = iadd v68, v16 -;; @0023 store notrap aligned v66, v31 ; v66 = -1342177246 -;; v69 = load.i64 notrap aligned readonly can_move v0+40 -;; v70 = load.i32 notrap aligned readonly can_move v69 -;; @0023 store notrap aligned v70, v31+4 -;; v71 = iconst.i64 48 -;; @0023 istore32 notrap aligned v71, v31+8 ; v71 = 48 -;; @0023 jump block4(v9, v31) +;; v63 = iconst.i32 48 +;; v61 = iadd.i32 v9, v63 ; v63 = 48 +;; @0023 store notrap aligned region0 v61, v8 +;; v64 = iconst.i32 -1342177246 +;; v65 = load.i64 notrap aligned readonly can_move v0+8 +;; v66 = load.i64 notrap aligned readonly can_move v65+32 +;; @0023 v33 = iadd v66, v16 +;; @0023 store notrap aligned v64, v33 ; v64 = -1342177246 +;; v67 = load.i64 notrap aligned readonly can_move v0+40 +;; v68 = load.i32 notrap aligned readonly can_move v67 +;; @0023 store notrap aligned v68, v33+4 +;; v69 = iconst.i64 48 +;; @0023 istore32 notrap aligned v69, v33+8 ; v69 = 48 +;; @0023 jump block4(v9, v33) ;; ;; block3 cold: ;; @0023 v20 = iconst.i32 -1342177246 @@ -60,29 +57,29 @@ ;; @0023 v7 = iconst.i32 48 ;; @0023 v23 = iconst.i32 16 ;; @0023 v24 = call fn0(v0, v20, v22, v7, v23) ; v20 = -1342177246, v7 = 48, v23 = 16 -;; @0023 v45 = load.i64 notrap aligned readonly can_move v0+8 -;; @0023 v25 = load.i64 notrap aligned readonly can_move v45+32 -;; @0023 v26 = uextend.i64 v24 -;; @0023 v27 = iadd v25, v26 -;; @0023 jump block4(v24, v27) +;; @0023 v25 = load.i64 notrap aligned readonly can_move v0+8 +;; @0023 v26 = load.i64 notrap aligned readonly can_move v25+32 +;; @0023 v27 = uextend.i64 v24 +;; @0023 v28 = iadd v26, v27 +;; @0023 jump block4(v24, v28) ;; -;; block4(v35: i32, v36: i64): +;; block4(v37: i32, v38: i64): ;; @0023 v3 = f32const 0.0 -;; @0023 v37 = iconst.i64 16 -;; @0023 v38 = iadd v36, v37 ; v37 = 16 -;; @0023 store user2 little region1 v3, v38 ; v3 = 0.0 +;; @0023 v39 = iconst.i64 16 +;; @0023 v40 = iadd v38, v39 ; v39 = 16 +;; @0023 store user2 little region1 v3, v40 ; v3 = 0.0 ;; @0023 v4 = iconst.i32 0 -;; @0023 v39 = iconst.i64 20 -;; @0023 v40 = iadd v36, v39 ; v39 = 20 -;; @0023 istore8 user2 little region1 v4, v40 ; v4 = 0 -;; @0023 v41 = iconst.i64 24 -;; @0023 v42 = iadd v36, v41 ; v41 = 24 -;; @0023 store user2 little region1 v4, v42 ; v4 = 0 +;; @0023 v41 = iconst.i64 20 +;; @0023 v42 = iadd v38, v41 ; v41 = 20 +;; @0023 istore8 user2 little region1 v4, v42 ; v4 = 0 +;; @0023 v43 = iconst.i64 24 +;; @0023 v44 = iadd v38, v43 ; v43 = 24 +;; @0023 store user2 little region1 v4, v44 ; v4 = 0 ;; @0023 v6 = vconst.i8x16 const0 -;; @0023 v43 = iconst.i64 32 -;; @0023 v44 = iadd v36, v43 ; v43 = 32 -;; @0023 store user2 little region1 v6, v44 ; v6 = const0 -;; @0026 jump block1(v35) +;; @0023 v45 = iconst.i64 32 +;; @0023 v46 = iadd v38, v45 ; v45 = 32 +;; @0023 store user2 little region1 v6, v46 ; v6 = const0 +;; @0026 jump block1(v37) ;; ;; block1(v2: i32): ;; @0026 return v2 diff --git a/tests/disas/gc/struct-new.wat b/tests/disas/gc/struct-new.wat index f144b5d2d658..90fcd9db5377 100644 --- a/tests/disas/gc/struct-new.wat +++ b/tests/disas/gc/struct-new.wat @@ -18,41 +18,38 @@ ;; gv0 = vmctx ;; gv1 = load.i64 notrap aligned readonly gv0+8 ;; gv2 = load.i64 notrap aligned gv1+24 -;; gv3 = vmctx -;; gv4 = load.i64 notrap aligned readonly can_move gv3+8 -;; gv5 = load.i64 notrap aligned readonly can_move gv4+32 ;; sig0 = (i64 vmctx, i32, i32, i32, i32) -> i32 tail ;; fn0 = colocated u805306368:24 sig0 ;; stack_limit = gv2 ;; ;; block0(v0: i64, v1: i64, v2: f32, v3: i32, v4: i32): -;; v44 = stack_addr.i64 ss0 -;; store notrap v4, v44 +;; v46 = stack_addr.i64 ss0 +;; store notrap v4, v46 ;; @002a v7 = load.i64 notrap aligned readonly can_move v0+32 ;; @002a v8 = load.i32 notrap aligned v7 ;; @002a v9 = load.i32 notrap aligned v7+4 ;; @002a v15 = uextend.i64 v8 -;; v49 = iconst.i64 32 -;; @002a v16 = iadd v15, v49 ; v49 = 32 +;; v47 = iconst.i64 32 +;; @002a v16 = iadd v15, v47 ; v47 = 32 ;; @002a v17 = uextend.i64 v9 ;; @002a v18 = icmp ule v16, v17 ;; @002a brif v18, block2, block3 ;; ;; block2: -;; v65 = iconst.i32 32 -;; v63 = iadd.i32 v8, v65 ; v65 = 32 -;; @002a store notrap aligned region0 v63, v7 -;; v66 = iconst.i32 -1342177246 -;; v67 = load.i64 notrap aligned readonly can_move v0+8 -;; v68 = load.i64 notrap aligned readonly can_move v67+32 -;; @002a v30 = iadd v68, v15 -;; @002a store notrap aligned v66, v30 ; v66 = -1342177246 -;; v69 = load.i64 notrap aligned readonly can_move v0+40 -;; v70 = load.i32 notrap aligned readonly can_move v69 -;; @002a store notrap aligned v70, v30+4 -;; v71 = iconst.i64 32 -;; @002a istore32 notrap aligned v71, v30+8 ; v71 = 32 -;; @002a jump block4(v8, v30) +;; v63 = iconst.i32 32 +;; v61 = iadd.i32 v8, v63 ; v63 = 32 +;; @002a store notrap aligned region0 v61, v7 +;; v64 = iconst.i32 -1342177246 +;; v65 = load.i64 notrap aligned readonly can_move v0+8 +;; v66 = load.i64 notrap aligned readonly can_move v65+32 +;; @002a v32 = iadd v66, v15 +;; @002a store notrap aligned v64, v32 ; v64 = -1342177246 +;; v67 = load.i64 notrap aligned readonly can_move v0+40 +;; v68 = load.i32 notrap aligned readonly can_move v67 +;; @002a store notrap aligned v68, v32+4 +;; v69 = iconst.i64 32 +;; @002a istore32 notrap aligned v69, v32+8 ; v69 = 32 +;; @002a jump block4(v8, v32) ;; ;; block3 cold: ;; @002a v19 = iconst.i32 -1342177246 @@ -61,24 +58,24 @@ ;; @002a v6 = iconst.i32 32 ;; @002a v22 = iconst.i32 16 ;; @002a v23 = call fn0(v0, v19, v21, v6, v22), stack_map=[i32 @ ss0+0] ; v19 = -1342177246, v6 = 32, v22 = 16 -;; @002a v45 = load.i64 notrap aligned readonly can_move v0+8 -;; @002a v24 = load.i64 notrap aligned readonly can_move v45+32 -;; @002a v25 = uextend.i64 v23 -;; @002a v26 = iadd v24, v25 -;; @002a jump block4(v23, v26) +;; @002a v24 = load.i64 notrap aligned readonly can_move v0+8 +;; @002a v25 = load.i64 notrap aligned readonly can_move v24+32 +;; @002a v26 = uextend.i64 v23 +;; @002a v27 = iadd v25, v26 +;; @002a jump block4(v23, v27) ;; -;; block4(v34: i32, v35: i64): -;; @002a v36 = iconst.i64 16 -;; @002a v37 = iadd v35, v36 ; v36 = 16 -;; @002a store.f32 user2 little region1 v2, v37 -;; @002a v38 = iconst.i64 20 -;; @002a v39 = iadd v35, v38 ; v38 = 20 -;; @002a istore8.i32 user2 little region1 v3, v39 -;; v43 = load.i32 notrap v44 -;; @002a v40 = iconst.i64 24 -;; @002a v41 = iadd v35, v40 ; v40 = 24 -;; @002a store user2 little region1 v43, v41 -;; @002d jump block1(v34) +;; block4(v36: i32, v37: i64): +;; @002a v38 = iconst.i64 16 +;; @002a v39 = iadd v37, v38 ; v38 = 16 +;; @002a store.f32 user2 little region1 v2, v39 +;; @002a v40 = iconst.i64 20 +;; @002a v41 = iadd v37, v40 ; v40 = 20 +;; @002a istore8.i32 user2 little region1 v3, v41 +;; v45 = load.i32 notrap v46 +;; @002a v42 = iconst.i64 24 +;; @002a v43 = iadd v37, v42 ; v42 = 24 +;; @002a store user2 little region1 v45, v43 +;; @002d jump block1(v36) ;; ;; block1(v5: i32): ;; @002d return v5