diff --git a/benchmarks/wasm/btree/2o1u-no-label.wat b/benchmarks/wasm/btree/2o1u-no-label.wat deleted file mode 100644 index 318c490f..00000000 --- a/benchmarks/wasm/btree/2o1u-no-label.wat +++ /dev/null @@ -1,2635 +0,0 @@ -(module - (type (;0;) (func (param i32) (result i32))) - (type (;1;) (func (param i32 i32) (result i32))) - (type (;2;) (func (param i32 i32))) - (type (;3;) (func (param i32 i32 i32))) - (func (;0;) (type 0) (param i32) (result i32) - i32.const 0 - local.get 0 - i32.store - i32.const 0 - i32.const 1 - i32.store offset=4 - i32.const 0 - i32.const 65536 - i32.store offset=8 - i32.const 1 - memory.grow - i32.const -1 - i32.ne - if ;; label = @1 - i32.const 65536 - i32.const 1 - i32.store - i32.const 65536 - i32.const 0 - i32.store offset=4 - end - i32.const 65536) - (func (;1;) (type 1) (param i32 i32) (result i32) - (local i32) - i32.const 0 - local.set 2 - block ;; label = @1 - loop ;; label = @2 - local.get 2 - local.get 0 - i32.load offset=4 - i32.const 1 - i32.sub - i32.le_s - if ;; label = @3 - local.get 1 - local.get 0 - i32.const 4 - local.get 2 - i32.mul - i32.add - i32.load offset=8 - i32.gt_s - if ;; label = @4 - i32.const 1 - local.get 2 - i32.add - local.set 2 - br 2 (;@2;) - else - br 3 (;@1;) - end - else - br 2 (;@1;) - end - end - end - local.get 2 - local.get 0 - i32.load offset=4 - i32.const 1 - i32.sub - i32.le_s - if (result i32) ;; label = @1 - local.get 1 - local.get 0 - i32.const 4 - local.get 2 - i32.mul - i32.add - i32.load offset=8 - i32.eq - if (result i32) ;; label = @2 - local.get 0 - i32.const 8 - i32.add - i32.const 4 - local.get 2 - i32.mul - i32.add - else - local.get 0 - i32.load - i32.const 1 - i32.eq - if (result i32) ;; label = @3 - i32.const -1 - else - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 2 - i32.const 4 - i32.mul - i32.add - local.get 0 - i32.add - i32.load offset=8 - local.get 1 - call 1 - end - end - else - local.get 0 - i32.load - i32.const 1 - i32.eq - if (result i32) ;; label = @2 - i32.const -1 - else - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 2 - i32.const 4 - i32.mul - i32.add - local.get 0 - i32.add - i32.load offset=8 - local.get 1 - call 1 - end - end) - (func (;2;) (type 2) (param i32 i32) - (local i32 i32) - i32.const 1 - memory.grow - i32.const -1 - i32.ne - if ;; label = @1 - i32.const 0 - i32.load offset=4 - i32.const 1 - i32.add - i32.const 65536 - i32.mul - local.set 2 - i32.const 0 - i32.const 0 - i32.load offset=4 - i32.const 1 - i32.add - i32.store offset=4 - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 1 - i32.const 4 - i32.mul - i32.add - local.get 0 - i32.add - i32.load offset=8 - i32.load - i32.const 1 - i32.eq - if ;; label = @2 - local.get 2 - i32.const 1 - i32.store - else - local.get 2 - i32.const 0 - i32.store - end - local.get 2 - i32.const 0 - i32.load - i32.const 2 - i32.div_s - i32.const 1 - i32.sub - i32.store offset=4 - i32.const 0 - local.set 3 - block ;; label = @2 - loop ;; label = @3 - local.get 3 - i32.const 0 - i32.load - i32.const 2 - i32.div_s - i32.const 1 - i32.sub - i32.eq - if ;; label = @4 - br 2 (;@2;) - else - local.get 2 - i32.const 4 - local.get 3 - i32.mul - i32.add - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 1 - i32.const 4 - i32.mul - i32.add - local.get 0 - i32.add - i32.load offset=8 - i32.const 4 - local.get 3 - i32.const 0 - i32.load - i32.const 2 - i32.div_s - i32.add - i32.mul - i32.add - i32.load offset=8 - i32.store offset=8 - local.get 3 - i32.const 1 - i32.add - local.set 3 - br 1 (;@3;) - end - end - end - i32.const 0 - local.set 3 - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 1 - i32.const 4 - i32.mul - i32.add - local.get 0 - i32.add - i32.load offset=8 - i32.load - i32.const 1 - i32.ne - if ;; label = @2 - block ;; label = @3 - loop ;; label = @4 - local.get 3 - i32.const 0 - i32.load - i32.const 2 - i32.div_s - i32.eq - if ;; label = @5 - br 2 (;@3;) - else - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 3 - i32.const 4 - i32.mul - i32.add - local.get 2 - i32.add - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 1 - i32.const 4 - i32.mul - i32.add - local.get 0 - i32.add - i32.load offset=8 - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 3 - i32.const 0 - i32.load - i32.const 2 - i32.div_s - i32.add - i32.const 4 - i32.mul - i32.add - i32.add - i32.load offset=8 - i32.store offset=8 - local.get 3 - i32.const 1 - i32.add - local.set 3 - br 1 (;@4;) - end - end - end - end - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 1 - i32.const 4 - i32.mul - i32.add - local.get 0 - i32.add - i32.load offset=8 - i32.const 0 - i32.load - i32.const 2 - i32.div_s - i32.const 1 - i32.sub - i32.store offset=4 - local.get 0 - i32.load offset=4 - local.set 3 - block ;; label = @2 - loop ;; label = @3 - local.get 1 - local.get 3 - i32.eq - if ;; label = @4 - br 2 (;@2;) - else - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 3 - i32.const 1 - i32.add - i32.const 4 - i32.mul - i32.add - local.get 0 - i32.add - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 3 - i32.const 4 - i32.mul - i32.add - local.get 0 - i32.add - i32.load offset=8 - i32.store offset=8 - local.get 3 - i32.const 1 - i32.sub - local.set 3 - br 1 (;@3;) - end - end - end - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 1 - i32.const 1 - i32.add - i32.const 4 - i32.mul - i32.add - local.get 0 - i32.add - local.get 2 - i32.store offset=8 - local.get 0 - i32.load offset=4 - i32.const 1 - i32.sub - local.set 3 - block ;; label = @2 - loop ;; label = @3 - local.get 1 - i32.const 1 - i32.sub - local.get 3 - i32.eq - if ;; label = @4 - br 2 (;@2;) - else - local.get 3 - i32.const 1 - i32.add - i32.const 4 - i32.mul - local.get 0 - i32.add - local.get 3 - i32.const 4 - i32.mul - local.get 0 - i32.add - i32.load offset=8 - i32.store offset=8 - local.get 3 - i32.const 1 - i32.sub - local.set 3 - br 1 (;@3;) - end - end - end - local.get 1 - i32.const 4 - i32.mul - local.get 0 - i32.add - i32.const 0 - i32.load - i32.const 2 - i32.div_s - i32.const 1 - i32.sub - i32.const 4 - i32.mul - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 1 - i32.const 4 - i32.mul - i32.add - local.get 0 - i32.add - i32.load offset=8 - i32.add - i32.load offset=8 - i32.store offset=8 - local.get 0 - local.get 0 - i32.load offset=4 - i32.const 1 - i32.add - i32.store offset=4 - end) - (func (;3;) (type 2) (param i32 i32) - (local i32) - local.get 0 - i32.load offset=4 - i32.const 1 - i32.sub - local.set 2 - local.get 0 - i32.load - i32.const 1 - i32.eq - if ;; label = @1 - block ;; label = @2 - loop ;; label = @3 - local.get 2 - i32.const 0 - i32.ge_s - if (result i32) ;; label = @4 - local.get 1 - local.get 0 - i32.const 4 - local.get 2 - i32.mul - i32.add - i32.load offset=8 - i32.lt_s - else - i32.const 0 - end - local.get 2 - i32.const 0 - i32.ge_s - i32.and - if ;; label = @4 - local.get 0 - i32.const 4 - local.get 2 - i32.const 1 - i32.add - i32.mul - i32.add - local.get 0 - i32.const 4 - local.get 2 - i32.mul - i32.add - i32.load offset=8 - i32.store offset=8 - local.get 2 - i32.const 1 - i32.sub - local.set 2 - br 1 (;@3;) - else - br 2 (;@2;) - end - end - end - local.get 0 - i32.const 4 - local.get 2 - i32.const 1 - i32.add - i32.mul - i32.add - local.get 1 - i32.store offset=8 - local.get 0 - local.get 0 - i32.load offset=4 - i32.const 1 - i32.add - i32.store offset=4 - else - block ;; label = @2 - loop ;; label = @3 - local.get 2 - i32.const 0 - i32.ge_s - if ;; label = @4 - local.get 1 - local.get 0 - i32.const 4 - local.get 2 - i32.mul - i32.add - i32.load offset=8 - i32.lt_s - if ;; label = @5 - local.get 2 - i32.const 1 - i32.sub - local.set 2 - br 2 (;@3;) - else - br 3 (;@2;) - end - else - br 2 (;@2;) - end - end - end - local.get 2 - i32.const 1 - i32.add - local.set 2 - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 2 - i32.const 4 - i32.mul - i32.add - local.get 0 - i32.add - i32.load offset=8 - i32.load offset=4 - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.eq - if ;; label = @2 - local.get 0 - local.get 2 - call 2 - local.get 1 - local.get 0 - i32.const 4 - local.get 2 - i32.mul - i32.add - i32.load offset=8 - i32.gt_s - if ;; label = @3 - local.get 2 - i32.const 1 - i32.add - local.set 2 - end - end - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 2 - i32.const 4 - i32.mul - i32.add - local.get 0 - i32.add - i32.load offset=8 - local.get 1 - call 3 - end) - (func (;4;) (type 0) (param i32) (result i32) - (local i32 i32) - i32.const 0 - i32.load offset=8 - local.tee 2 - i32.load offset=4 - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.eq - if (result i32) ;; label = @1 - i32.const 1 - memory.grow - i32.const -1 - i32.ne - if (result i32) ;; label = @2 - i32.const 0 - i32.load offset=4 - i32.const 1 - i32.add - i32.const 65536 - i32.mul - local.set 1 - i32.const 0 - i32.const 0 - i32.load offset=4 - i32.const 1 - i32.add - i32.store offset=4 - i32.const 0 - local.get 1 - i32.store offset=8 - local.get 1 - i32.const 0 - i32.store - local.get 1 - i32.const 0 - i32.store offset=4 - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - i32.const 0 - i32.const 4 - i32.mul - i32.add - local.get 1 - i32.add - local.get 2 - i32.store offset=8 - local.get 1 - i32.const 0 - call 2 - local.get 1 - local.get 0 - call 3 - local.get 1 - else - i32.const -1 - end - else - local.get 2 - local.get 0 - call 3 - local.get 2 - end) - (func (;5;) (type 1) (param i32 i32) (result i32) - (local i32 i32 i32 i32) - local.get 0 - i32.load - i32.const 1 - i32.eq - if ;; label = @1 - i32.const 0 - local.set 2 - block ;; label = @2 - loop ;; label = @3 - local.get 0 - i32.load offset=4 - local.get 2 - i32.eq - if ;; label = @4 - br 2 (;@2;) - else - local.get 0 - i32.const 4 - local.get 2 - i32.mul - i32.add - i32.load offset=8 - local.get 1 - i32.eq - if ;; label = @5 - local.get 2 - local.set 3 - block ;; label = @6 - loop ;; label = @7 - local.get 3 - local.get 0 - i32.load offset=4 - i32.const 1 - i32.sub - i32.eq - if ;; label = @8 - br 2 (;@6;) - else - local.get 0 - i32.const 4 - local.get 3 - i32.mul - i32.add - local.get 0 - i32.const 4 - local.get 3 - i32.const 1 - i32.add - i32.mul - i32.add - i32.load offset=8 - i32.store offset=8 - local.get 3 - i32.const 1 - i32.add - local.set 3 - br 1 (;@7;) - end - end - end - local.get 0 - local.get 0 - i32.load offset=4 - i32.const 1 - i32.sub - i32.store offset=4 - br 3 (;@2;) - end - end - i32.const 1 - local.get 2 - i32.add - local.set 2 - br 0 (;@3;) - end - end - else - i32.const 0 - local.set 2 - block ;; label = @2 - loop ;; label = @3 - local.get 2 - local.get 0 - i32.load offset=4 - i32.const 1 - i32.sub - i32.le_s - if (result i32) ;; label = @4 - local.get 1 - local.get 0 - i32.const 4 - local.get 2 - i32.mul - i32.add - i32.load offset=8 - i32.gt_s - else - i32.const 0 - end - local.get 2 - local.get 0 - i32.load offset=4 - i32.const 1 - i32.sub - i32.le_s - i32.and - if ;; label = @4 - local.get 2 - i32.const 1 - i32.add - local.set 2 - br 1 (;@3;) - else - br 2 (;@2;) - end - end - end - local.get 2 - local.get 0 - i32.load offset=4 - i32.lt_s - if (result i32) ;; label = @2 - local.get 0 - i32.const 4 - local.get 2 - i32.mul - i32.add - i32.load offset=8 - local.get 1 - i32.eq - else - i32.const 0 - end - if ;; label = @2 - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 2 - i32.const 4 - i32.mul - i32.add - local.get 0 - i32.add - i32.load offset=8 - local.tee 5 - i32.load offset=4 - i32.const 0 - i32.load - i32.const 2 - i32.div_s - i32.ge_s - if ;; label = @3 - local.get 0 - i32.const 4 - local.get 2 - i32.mul - i32.add - local.get 5 - i32.const 4 - local.get 5 - i32.load offset=4 - i32.const 1 - i32.sub - i32.mul - i32.add - i32.load offset=8 - local.get 5 - local.get 5 - i32.const 4 - local.get 5 - i32.load offset=4 - i32.const 1 - i32.sub - i32.mul - i32.add - i32.load offset=8 - call 5 - drop - i32.store offset=8 - else - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 2 - i32.const 1 - i32.add - i32.const 4 - i32.mul - i32.add - local.get 0 - i32.add - i32.load offset=8 - local.tee 5 - i32.load offset=4 - i32.const 0 - i32.load - i32.const 2 - i32.div_s - i32.ge_s - if ;; label = @4 - local.get 0 - i32.const 4 - local.get 2 - i32.mul - i32.add - local.get 5 - i32.const 4 - i32.const 0 - i32.mul - i32.add - i32.load offset=8 - local.get 5 - local.get 5 - i32.const 4 - i32.const 0 - i32.mul - i32.add - i32.load offset=8 - call 5 - drop - i32.store offset=8 - else - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 2 - i32.const 4 - i32.mul - i32.add - local.get 0 - i32.add - i32.load offset=8 - local.set 5 - local.get 5 - i32.const 4 - local.get 5 - i32.load offset=4 - i32.mul - i32.add - local.get 1 - i32.store offset=8 - i32.const 0 - local.set 3 - block ;; label = @5 - loop ;; label = @6 - local.get 3 - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 2 - i32.const 1 - i32.add - i32.const 4 - i32.mul - i32.add - local.get 0 - i32.add - i32.load offset=8 - i32.load offset=4 - i32.eq - if ;; label = @7 - br 2 (;@5;) - else - local.get 5 - i32.const 4 - local.get 5 - i32.load offset=4 - local.get 3 - i32.add - i32.const 1 - i32.add - i32.mul - i32.add - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 2 - i32.const 1 - i32.add - i32.const 4 - i32.mul - i32.add - local.get 0 - i32.add - i32.load offset=8 - i32.const 4 - local.get 3 - i32.mul - i32.add - i32.load offset=8 - i32.store offset=8 - local.get 3 - i32.const 1 - i32.add - local.set 3 - br 1 (;@6;) - end - end - end - local.get 5 - local.get 5 - i32.load offset=4 - i32.const 1 - i32.add - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 2 - i32.const 1 - i32.add - i32.const 4 - i32.mul - i32.add - local.get 0 - i32.add - i32.load offset=8 - i32.load offset=4 - i32.add - i32.store offset=4 - local.get 5 - i32.load - i32.const 1 - i32.ne - if ;; label = @5 - i32.const 0 - local.set 3 - block ;; label = @6 - loop ;; label = @7 - local.get 3 - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 2 - i32.const 1 - i32.add - i32.const 4 - i32.mul - i32.add - local.get 0 - i32.add - i32.load offset=8 - i32.load offset=4 - i32.const 1 - i32.add - i32.eq - if ;; label = @8 - br 2 (;@6;) - else - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 5 - i32.load offset=4 - local.get 3 - i32.add - i32.const 1 - i32.add - i32.const 4 - i32.mul - i32.add - local.get 5 - i32.add - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 3 - i32.const 4 - i32.mul - i32.add - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 2 - i32.const 1 - i32.add - i32.const 4 - i32.mul - i32.add - local.get 0 - i32.add - i32.load offset=8 - i32.add - i32.load offset=8 - i32.store offset=8 - local.get 3 - i32.const 1 - i32.add - local.set 3 - br 1 (;@7;) - end - end - end - end - local.get 2 - local.set 3 - block ;; label = @5 - loop ;; label = @6 - local.get 0 - i32.load offset=4 - i32.const 1 - i32.sub - local.get 3 - i32.eq - if ;; label = @7 - br 2 (;@5;) - else - local.get 0 - i32.const 4 - local.get 3 - i32.mul - i32.add - local.get 0 - i32.const 4 - local.get 3 - i32.const 1 - i32.add - i32.mul - i32.add - i32.load offset=8 - i32.store offset=8 - local.get 3 - i32.const 1 - i32.add - local.set 3 - br 1 (;@6;) - end - end - end - local.get 2 - i32.const 1 - i32.add - local.set 3 - block ;; label = @5 - loop ;; label = @6 - local.get 0 - i32.load offset=4 - local.get 3 - i32.eq - if ;; label = @7 - br 2 (;@5;) - else - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 3 - i32.const 4 - i32.mul - i32.add - local.get 0 - i32.add - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 3 - i32.const 1 - i32.add - i32.const 4 - i32.mul - i32.add - local.get 0 - i32.add - i32.load offset=8 - i32.store offset=8 - local.get 3 - i32.const 1 - i32.add - local.set 3 - br 1 (;@6;) - end - end - end - local.get 0 - local.get 0 - i32.load offset=4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get 5 - local.get 1 - call 5 - drop - end - end - else - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 2 - i32.const 4 - i32.mul - i32.add - local.get 0 - i32.add - i32.load offset=8 - local.set 5 - local.get 5 - i32.load offset=4 - i32.const 0 - i32.load - i32.const 2 - i32.div_s - i32.const 1 - i32.sub - i32.eq - if ;; label = @3 - i32.const -1 - local.set 4 - local.get 2 - i32.const 1 - i32.add - local.get 0 - i32.load offset=4 - i32.le_s - if ;; label = @4 - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 2 - i32.const 1 - i32.add - i32.const 4 - i32.mul - i32.add - local.get 0 - i32.add - i32.load offset=8 - i32.load offset=4 - i32.const 0 - i32.load - i32.const 2 - i32.div_s - i32.ge_s - if ;; label = @5 - local.get 5 - i32.const 4 - i32.const 0 - i32.load - i32.const 2 - i32.div_s - i32.const 1 - i32.sub - i32.mul - i32.add - local.get 0 - i32.const 4 - local.get 2 - i32.mul - i32.add - i32.load offset=8 - i32.store offset=8 - local.get 5 - local.get 5 - i32.load offset=4 - i32.const 1 - i32.add - i32.store offset=4 - local.get 0 - i32.const 4 - local.get 2 - i32.mul - i32.add - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 2 - i32.const 1 - i32.add - i32.const 4 - i32.mul - i32.add - local.get 0 - i32.add - i32.load offset=8 - i32.const 4 - i32.const 0 - i32.mul - i32.add - i32.load offset=8 - i32.store offset=8 - local.get 5 - i32.load - i32.const 1 - i32.ne - if ;; label = @6 - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - i32.const 0 - i32.load - i32.const 2 - i32.div_s - i32.const 4 - i32.mul - i32.add - local.get 5 - i32.add - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - i32.const 0 - i32.const 4 - i32.mul - i32.add - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 2 - i32.const 1 - i32.add - i32.const 4 - i32.mul - i32.add - local.get 0 - i32.add - i32.load offset=8 - i32.add - i32.load offset=8 - i32.store offset=8 - end - local.get 5 - i32.const 0 - i32.load - i32.const 2 - i32.div_s - i32.store offset=4 - i32.const 0 - local.set 3 - block ;; label = @6 - loop ;; label = @7 - local.get 3 - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 2 - i32.const 1 - i32.add - i32.const 4 - i32.mul - i32.add - local.get 0 - i32.add - i32.load offset=8 - i32.load offset=4 - i32.const 1 - i32.sub - i32.eq - if ;; label = @8 - br 2 (;@6;) - else - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 2 - i32.const 1 - i32.add - i32.const 4 - i32.mul - i32.add - local.get 0 - i32.add - i32.load offset=8 - i32.const 4 - local.get 3 - i32.mul - i32.add - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 2 - i32.const 1 - i32.add - i32.const 4 - i32.mul - i32.add - local.get 0 - i32.add - i32.load offset=8 - i32.const 4 - local.get 3 - i32.const 1 - i32.add - i32.mul - i32.add - i32.load offset=8 - i32.store offset=8 - local.get 3 - i32.const 1 - i32.add - local.set 3 - br 1 (;@7;) - end - end - end - local.get 5 - i32.load - i32.const 1 - i32.ne - if ;; label = @6 - i32.const 0 - local.set 3 - block ;; label = @7 - loop ;; label = @8 - local.get 3 - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 2 - i32.const 1 - i32.add - i32.const 4 - i32.mul - i32.add - local.get 0 - i32.add - i32.load offset=8 - i32.load offset=4 - i32.eq - if ;; label = @9 - br 2 (;@7;) - else - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 3 - i32.const 4 - i32.mul - i32.add - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 2 - i32.const 1 - i32.add - i32.const 4 - i32.mul - i32.add - local.get 0 - i32.add - i32.load offset=8 - i32.add - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 3 - i32.const 1 - i32.add - i32.const 4 - i32.mul - i32.add - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 2 - i32.const 1 - i32.add - i32.const 4 - i32.mul - i32.add - local.get 0 - i32.add - i32.load offset=8 - i32.add - i32.load offset=8 - i32.store offset=8 - local.get 3 - i32.const 1 - i32.add - local.set 3 - br 1 (;@8;) - end - end - end - end - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 2 - i32.const 1 - i32.add - i32.const 4 - i32.mul - i32.add - local.get 0 - i32.add - i32.load offset=8 - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 2 - i32.const 1 - i32.add - i32.const 4 - i32.mul - i32.add - local.get 0 - i32.add - i32.load offset=8 - i32.load offset=4 - i32.const 1 - i32.sub - i32.store offset=4 - i32.const 0 - local.set 4 - end - end - local.get 4 - i32.const -1 - i32.eq - local.get 2 - i32.const 1 - i32.sub - i32.const 0 - i32.ge_s - i32.and - if ;; label = @4 - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 2 - i32.const 1 - i32.sub - i32.const 4 - i32.mul - i32.add - local.get 0 - i32.add - i32.load offset=8 - i32.load offset=4 - i32.const 0 - i32.load - i32.const 2 - i32.div_s - i32.ge_s - if ;; label = @5 - local.get 5 - i32.load offset=4 - local.set 3 - block ;; label = @6 - loop ;; label = @7 - local.get 3 - i32.const 0 - i32.eq - if ;; label = @8 - br 2 (;@6;) - else - local.get 5 - i32.const 4 - local.get 3 - i32.mul - i32.add - local.get 5 - i32.const 4 - local.get 3 - i32.const 1 - i32.sub - i32.mul - i32.add - i32.load offset=8 - i32.store offset=8 - local.get 3 - i32.const 1 - i32.sub - local.set 3 - br 1 (;@7;) - end - end - end - local.get 5 - i32.load - i32.const 1 - i32.ne - if ;; label = @6 - local.get 5 - i32.load offset=4 - i32.const 1 - i32.add - local.set 3 - block ;; label = @7 - loop ;; label = @8 - local.get 3 - i32.const 0 - i32.eq - if ;; label = @9 - br 2 (;@7;) - else - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 3 - i32.const 4 - i32.mul - i32.add - local.get 5 - i32.add - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 3 - i32.const 1 - i32.sub - i32.const 4 - i32.mul - i32.add - local.get 5 - i32.add - i32.load offset=8 - i32.store offset=8 - local.get 3 - i32.const 1 - i32.sub - local.set 3 - br 1 (;@8;) - end - end - end - end - local.get 5 - local.get 5 - i32.load offset=4 - i32.const 1 - i32.add - i32.store offset=4 - local.get 5 - i32.const 4 - i32.const 0 - i32.mul - i32.add - local.get 0 - i32.const 4 - local.get 2 - i32.const 1 - i32.sub - i32.mul - i32.add - i32.load offset=8 - i32.store offset=8 - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 2 - i32.const 1 - i32.sub - i32.const 4 - i32.mul - i32.add - local.get 0 - i32.add - i32.load offset=8 - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 2 - i32.const 1 - i32.sub - i32.const 4 - i32.mul - i32.add - local.get 0 - i32.add - i32.load offset=8 - i32.load offset=4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get 0 - i32.const 4 - local.get 2 - i32.const 1 - i32.sub - i32.mul - i32.add - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 2 - i32.const 1 - i32.sub - i32.const 4 - i32.mul - i32.add - local.get 0 - i32.add - i32.load offset=8 - i32.const 4 - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 2 - i32.const 1 - i32.sub - i32.const 4 - i32.mul - i32.add - local.get 0 - i32.add - i32.load offset=8 - i32.load offset=4 - i32.mul - i32.add - i32.load offset=8 - i32.store offset=8 - local.get 5 - i32.load - i32.const 1 - i32.ne - if ;; label = @6 - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - i32.const 0 - i32.const 4 - i32.mul - i32.add - local.get 5 - i32.add - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 2 - i32.const 1 - i32.sub - i32.const 4 - i32.mul - i32.add - local.get 0 - i32.add - i32.load offset=8 - i32.load offset=4 - i32.const 1 - i32.add - i32.const 4 - i32.mul - i32.add - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 2 - i32.const 1 - i32.sub - i32.const 4 - i32.mul - i32.add - local.get 0 - i32.add - i32.load offset=8 - i32.add - i32.load offset=8 - i32.store offset=8 - end - i32.const 0 - local.set 4 - end - end - local.get 4 - i32.const -1 - i32.eq - if ;; label = @4 - local.get 2 - i32.const 1 - i32.add - local.get 0 - i32.load offset=4 - i32.le_s - if ;; label = @5 - local.get 5 - i32.const 4 - local.get 5 - i32.load offset=4 - i32.mul - i32.add - local.get 0 - i32.const 4 - local.get 2 - i32.mul - i32.add - i32.load offset=8 - i32.store offset=8 - i32.const 0 - local.set 3 - block ;; label = @6 - loop ;; label = @7 - local.get 3 - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 2 - i32.const 1 - i32.add - i32.const 4 - i32.mul - i32.add - local.get 0 - i32.add - i32.load offset=8 - i32.load offset=4 - i32.eq - if ;; label = @8 - br 2 (;@6;) - else - local.get 5 - i32.const 4 - local.get 5 - i32.load offset=4 - local.get 3 - i32.add - i32.const 1 - i32.add - i32.mul - i32.add - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 2 - i32.const 1 - i32.add - i32.const 4 - i32.mul - i32.add - local.get 0 - i32.add - i32.load offset=8 - i32.const 4 - local.get 3 - i32.mul - i32.add - i32.load offset=8 - i32.store offset=8 - local.get 3 - i32.const 1 - i32.add - local.set 3 - br 1 (;@7;) - end - end - end - local.get 5 - i32.load - i32.const 1 - i32.ne - if ;; label = @6 - i32.const 0 - local.set 3 - block ;; label = @7 - loop ;; label = @8 - local.get 3 - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 2 - i32.const 1 - i32.add - i32.const 4 - i32.mul - i32.add - local.get 0 - i32.add - i32.load offset=8 - i32.load offset=4 - i32.const 1 - i32.add - i32.eq - if ;; label = @9 - br 2 (;@7;) - else - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 5 - i32.load offset=4 - local.get 3 - i32.add - i32.const 1 - i32.add - i32.const 4 - i32.mul - i32.add - local.get 5 - i32.add - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 3 - i32.const 4 - i32.mul - i32.add - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 2 - i32.const 1 - i32.add - i32.const 4 - i32.mul - i32.add - local.get 0 - i32.add - i32.load offset=8 - i32.add - i32.load offset=8 - i32.store offset=8 - local.get 3 - i32.const 1 - i32.add - local.set 3 - br 1 (;@8;) - end - end - end - end - local.get 5 - local.get 5 - i32.load offset=4 - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 2 - i32.const 1 - i32.add - i32.const 4 - i32.mul - i32.add - local.get 0 - i32.add - i32.load offset=8 - i32.load offset=4 - i32.add - i32.const 1 - i32.add - i32.store offset=4 - local.get 2 - i32.const 1 - i32.add - local.set 3 - block ;; label = @6 - loop ;; label = @7 - local.get 3 - local.get 0 - i32.load offset=4 - i32.eq - if ;; label = @8 - br 2 (;@6;) - else - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 3 - i32.const 4 - i32.mul - i32.add - local.get 0 - i32.add - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 3 - i32.const 1 - i32.add - i32.const 4 - i32.mul - i32.add - local.get 0 - i32.add - i32.load offset=8 - i32.store offset=8 - local.get 3 - i32.const 1 - i32.add - local.set 3 - br 1 (;@7;) - end - end - end - local.get 2 - local.set 3 - block ;; label = @6 - loop ;; label = @7 - local.get 3 - local.get 0 - i32.load offset=4 - i32.const 1 - i32.sub - i32.eq - if ;; label = @8 - br 2 (;@6;) - else - local.get 0 - i32.const 4 - local.get 3 - i32.mul - i32.add - local.get 0 - i32.const 4 - local.get 3 - i32.const 1 - i32.add - i32.mul - i32.add - i32.load offset=8 - i32.store offset=8 - local.get 3 - i32.const 1 - i32.add - local.set 3 - br 1 (;@7;) - end - end - end - local.get 0 - local.get 0 - i32.load offset=4 - i32.const 1 - i32.sub - i32.store offset=4 - i32.const 0 - local.set 4 - end - local.get 4 - i32.const -1 - i32.eq - local.get 2 - i32.const 1 - i32.sub - i32.const 0 - i32.ge_s - i32.and - if ;; label = @5 - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 2 - i32.const 1 - i32.sub - i32.const 4 - i32.mul - i32.add - local.get 0 - i32.add - i32.load offset=8 - i32.const 4 - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 2 - i32.const 1 - i32.sub - i32.const 4 - i32.mul - i32.add - local.get 0 - i32.add - i32.load offset=8 - i32.load offset=4 - i32.mul - i32.add - local.get 0 - i32.const 4 - local.get 2 - i32.const 1 - i32.sub - i32.mul - i32.add - i32.load offset=8 - i32.store offset=8 - i32.const 0 - local.set 3 - block ;; label = @6 - loop ;; label = @7 - local.get 3 - local.get 5 - i32.load offset=4 - i32.eq - if ;; label = @8 - br 2 (;@6;) - else - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 2 - i32.const 1 - i32.sub - i32.const 4 - i32.mul - i32.add - local.get 0 - i32.add - i32.load offset=8 - i32.const 4 - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 2 - i32.const 1 - i32.sub - i32.const 4 - i32.mul - i32.add - local.get 0 - i32.add - i32.load offset=8 - i32.load offset=4 - local.get 3 - i32.add - i32.const 1 - i32.add - i32.mul - i32.add - local.get 5 - i32.const 4 - local.get 3 - i32.mul - i32.add - i32.load offset=8 - i32.store offset=8 - local.get 3 - i32.const 1 - i32.add - local.set 3 - br 1 (;@7;) - end - end - end - local.get 5 - i32.load - i32.const 1 - i32.ne - if ;; label = @6 - i32.const 0 - local.set 3 - block ;; label = @7 - loop ;; label = @8 - local.get 3 - local.get 5 - i32.load offset=4 - i32.const 1 - i32.add - i32.eq - if ;; label = @9 - br 2 (;@7;) - else - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 2 - i32.const 1 - i32.sub - i32.const 4 - i32.mul - i32.add - local.get 0 - i32.add - i32.load offset=8 - i32.load offset=4 - local.get 3 - i32.add - i32.const 1 - i32.add - i32.const 4 - i32.mul - i32.add - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 2 - i32.const 1 - i32.sub - i32.const 4 - i32.mul - i32.add - local.get 0 - i32.add - i32.load offset=8 - i32.add - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 3 - i32.const 4 - i32.mul - i32.add - local.get 5 - i32.add - i32.load offset=8 - i32.store offset=8 - local.get 3 - i32.const 1 - i32.add - local.set 3 - br 1 (;@8;) - end - end - end - end - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 2 - i32.const 1 - i32.sub - i32.const 4 - i32.mul - i32.add - local.get 0 - i32.add - i32.load offset=8 - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 2 - i32.const 1 - i32.sub - i32.const 4 - i32.mul - i32.add - local.get 0 - i32.add - i32.load offset=8 - i32.load offset=4 - local.get 5 - i32.load offset=4 - i32.add - i32.const 1 - i32.add - i32.store offset=4 - local.get 2 - local.set 3 - block ;; label = @6 - loop ;; label = @7 - local.get 3 - local.get 0 - i32.load offset=4 - i32.eq - if ;; label = @8 - br 2 (;@6;) - else - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 3 - i32.const 4 - i32.mul - i32.add - local.get 0 - i32.add - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 3 - i32.const 1 - i32.add - i32.const 4 - i32.mul - i32.add - local.get 0 - i32.add - i32.load offset=8 - i32.store offset=8 - local.get 3 - i32.const 1 - i32.add - local.set 3 - br 1 (;@7;) - end - end - end - local.get 2 - i32.const 1 - i32.sub - local.set 3 - block ;; label = @6 - loop ;; label = @7 - local.get 3 - local.get 0 - i32.load offset=4 - i32.const 1 - i32.sub - i32.eq - if ;; label = @8 - br 2 (;@6;) - else - local.get 0 - i32.const 4 - local.get 3 - i32.mul - i32.add - local.get 0 - i32.const 4 - local.get 3 - i32.const 1 - i32.add - i32.mul - i32.add - i32.load offset=8 - i32.store offset=8 - local.get 3 - i32.const 1 - i32.add - local.set 3 - br 1 (;@7;) - end - end - end - local.get 0 - local.get 0 - i32.load offset=4 - i32.const 1 - i32.sub - i32.store offset=4 - end - end - end - local.get 4 - i32.const -1 - i32.eq - if ;; label = @3 - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - local.get 2 - i32.const 1 - i32.sub - i32.const 4 - i32.mul - i32.add - local.get 0 - i32.add - i32.load offset=8 - local.get 1 - call 5 - drop - else - local.get 5 - local.get 1 - call 5 - drop - end - end - end - i32.const 0 - i32.load offset=8 - i32.load offset=4 - i32.const 0 - i32.eq - if ;; label = @1 - i32.const 0 - i32.const 0 - i32.load - i32.const 1 - i32.sub - i32.const 4 - i32.mul - i32.const 0 - i32.const 4 - i32.mul - i32.add - i32.const 0 - i32.load offset=8 - i32.add - i32.load offset=8 - i32.store offset=8 - end - i32.const 0 - i32.load offset=8) - (func $main (;6;) (type 3) (param i32 i32 i32) - (local i32) - local.get 0 - local.get 1 - i32.gt_s - local.get 0 - local.get 2 - i32.ne - local.get 1 - local.get 2 - i32.ne - i32.and - i32.and - i32.eqz - if ;; label = @1 - unreachable - end - i32.const 4 - call 0 - local.set 3 - local.get 0 - call 4 - local.set 3 - local.get 1 - call 4 - local.set 3 - local.get 2 - call 4 - local.set 3 - local.get 3 - local.get 0 - call 1 - i32.const -1 - i32.ne - local.get 3 - local.get 1 - call 1 - i32.const -1 - i32.ne - local.get 3 - local.get 2 - call 1 - i32.const -1 - i32.ne - i32.and - i32.and - local.get 3 - local.get 0 - call 5 - local.tee 3 - local.get 0 - call 1 - i32.const -1 - i32.eq - local.get 3 - local.get 1 - call 5 - local.tee 3 - local.get 1 - call 1 - i32.const -1 - i32.eq - i32.and - i32.and - drop) - (func $real_main - i32.const 3 - i32.const 2 - i32.const 1 - call 6 ;; $main ;; TODO: FIXME: $main is parsed as 0! - ) - (start $real_main) - (memory (;0;) 2) - (export "main" (func 6))) diff --git a/benchmarks/wasm/btree/2o1u-no-label-for-real.wat b/benchmarks/wasm/btree/2o1u-tee.wat similarity index 98% rename from benchmarks/wasm/btree/2o1u-no-label-for-real.wat rename to benchmarks/wasm/btree/2o1u-tee.wat index fe2a2e70..2b0be28a 100644 --- a/benchmarks/wasm/btree/2o1u-no-label-for-real.wat +++ b/benchmarks/wasm/btree/2o1u-tee.wat @@ -1,10 +1,12 @@ (module - (type (;0;) (func (param i32) (result i32))) - (type (;1;) (func (param i32 i32) (result i32))) - (type (;2;) (func (param i32 i32))) - (type (;3;) (func (param i32 i32 i32))) - (type (;4;) (func)) - (func (;0;) (type 0) (param i32) (result i32) + (type (;0;) (func (param i32))) + (type (;1;) (func (param i32) (result i32))) + (type (;2;) (func (param i32 i32) (result i32))) + (type (;3;) (func (param i32 i32))) + (type (;4;) (func (param i32 i32 i32))) + (type (;5;) (func)) + (import "console" "log" (func (;0;) (type 0))) + (func (;1;) (type 1) (param i32) (result i32) i32.const 0 local.get 0 i32.store @@ -27,7 +29,7 @@ i32.store offset=4 end i32.const 65536) - (func (;1;) (type 1) (param i32 i32) (result i32) + (func (;2;) (type 2) (param i32 i32) (result i32) (local i32) i32.const 0 local.set 2 @@ -107,7 +109,7 @@ i32.add i32.load offset=8 local.get 1 - call 1 + call 2 end end else @@ -132,10 +134,10 @@ i32.add i32.load offset=8 local.get 1 - call 1 + call 2 end end) - (func (;2;) (type 2) (param i32 i32) + (func (;3;) (type 3) (param i32 i32) (local i32 i32) i32.const 1 memory.grow @@ -478,8 +480,8 @@ i32.add i32.store offset=4 end) - (func (;3;) (type 2) (param i32 i32) - (local i32) + (func (;4;) (type 3) (param i32 i32) + (local i32 i32) local.get 0 i32.load offset=4 i32.const 1 @@ -487,6 +489,10 @@ local.set 2 local.get 0 i32.load + local.tee 3 + local.get 3 + call 0 + unreachable i32.const 1 i32.eq if ;; label = @1 @@ -606,7 +612,7 @@ if ;; label = @2 local.get 0 local.get 2 - call 2 + call 3 local.get 1 local.get 0 i32.const 4 @@ -636,9 +642,9 @@ i32.add i32.load offset=8 local.get 1 - call 3 + call 4 end) - (func (;4;) (type 0) (param i32) (result i32) + (func (;5;) (type 1) (param i32) (result i32) (local i32 i32) i32.const 0 i32.load offset=8 @@ -693,10 +699,10 @@ i32.store offset=8 local.get 1 i32.const 0 - call 2 + call 3 local.get 1 local.get 0 - call 3 + call 4 local.get 1 else i32.const -1 @@ -704,10 +710,10 @@ else local.get 2 local.get 0 - call 3 + call 4 local.get 2 end) - (func (;5;) (type 1) (param i32 i32) (result i32) + (func (;6;) (type 2) (param i32 i32) (result i32) (local i32 i32 i32 i32) local.get 0 i32.load @@ -888,7 +894,7 @@ i32.mul i32.add i32.load offset=8 - call 5 + call 6 drop i32.store offset=8 else @@ -933,7 +939,7 @@ i32.mul i32.add i32.load offset=8 - call 5 + call 6 drop i32.store offset=8 else @@ -1224,7 +1230,7 @@ i32.store offset=4 local.get 5 local.get 1 - call 5 + call 6 drop end end @@ -2525,12 +2531,12 @@ i32.add i32.load offset=8 local.get 1 - call 5 + call 6 drop else local.get 5 local.get 1 - call 5 + call 6 drop end end @@ -2560,7 +2566,7 @@ end i32.const 0 i32.load offset=8) - (func (;6;) (type 3) (param i32 i32 i32) + (func (;7;) (type 4) (param i32 i32 i32) (local i32) local.get 0 local.get 1 @@ -2578,58 +2584,58 @@ unreachable end i32.const 4 - call 0 + call 1 local.set 3 local.get 0 - call 4 + call 5 local.set 3 local.get 1 - call 4 + call 5 local.set 3 local.get 2 - call 4 + call 5 local.set 3 local.get 3 local.get 0 - call 1 + call 2 i32.const -1 i32.ne local.get 3 local.get 1 - call 1 + call 2 i32.const -1 i32.ne local.get 3 local.get 2 - call 1 + call 2 i32.const -1 i32.ne i32.and i32.and local.get 3 local.get 0 - call 5 + call 6 local.tee 3 local.get 0 - call 1 + call 2 i32.const -1 i32.eq local.get 3 local.get 1 - call 5 + call 6 local.tee 3 local.get 1 - call 1 + call 2 i32.const -1 i32.eq i32.and i32.and drop) - (func (;7;) (type 4) + (func (;8;) (type 5) i32.const 3 i32.const 2 i32.const 1 - call 6) + call 7) (memory (;0;) 2) - (export "main" (func 6)) - (start 7)) + (start 8) +) diff --git a/benchmarks/wasm/btree/2o1u.wat b/benchmarks/wasm/btree/2o1u.wat index 8a4a2b80..c1cb05f4 100644 --- a/benchmarks/wasm/btree/2o1u.wat +++ b/benchmarks/wasm/btree/2o1u.wat @@ -1,5 +1,5 @@ (module - (import "env" "log" (func $log (param i32))) + ;; (import "env" "log" (func $log (param i32))) (memory $0 2) (func $createBtree (param i32) (result i32) ;; createBtree(t), where t: degree of the btree (i32.const 0) @@ -528,9 +528,10 @@ (local.set 2) ;; i = x.n -1 (local.get 0) ;; x (i32.load) ;; get first i32 --> isLeaf - (local.tee $tmp) - (local.get $tmp) - (call $log) + ;; (local.tee $tmp) + ;; (local.get $tmp) + ;; (call $log) + (unreachable) (i32.const 1) (i32.eq) ;; is leaf? (if @@ -2813,7 +2814,7 @@ (i32.and) (drop) ) - (export "main" (func $main)) + (export "main" (func $real_main)) (func $real_main i32.const 3 i32.const 2 diff --git a/src/test/scala/genwasym/TestEval.scala b/src/test/scala/genwasym/TestEval.scala index 81fb7df5..d0f1b379 100644 --- a/src/test/scala/genwasym/TestEval.scala +++ b/src/test/scala/genwasym/TestEval.scala @@ -41,7 +41,7 @@ class TestEval extends FunSuite { test("return") { testFile("./benchmarks/wasm/return.wat", None, None) } // Parser works, but the memory issue remains - // test("btree") { testFile("./benchmarks/wasm/btree/2o1u-no-label-for-real.wat") } + test("btree") { testFile("./benchmarks/wasm/btree/2o1u-tee.wat") } // TODO: add more wasm spec tests? // test("memory") { test_btree("./benchmarks/wasm/spectest/test.wat", "$real_main") }