diff --git a/tests/diff.rs b/tests/diff.rs index e19f6b7..9026fbb 100644 --- a/tests/diff.rs +++ b/tests/diff.rs @@ -122,4 +122,5 @@ mod gas { def_gas_test!(simple); def_gas_test!(start); def_gas_test!(call); + def_gas_test!(branch); } diff --git a/tests/expectations/gas/branch.wat b/tests/expectations/gas/branch.wat new file mode 100644 index 0000000..56c5ecf --- /dev/null +++ b/tests/expectations/gas/branch.wat @@ -0,0 +1,29 @@ +(module + (type (;0;) (func (result i32))) + (type (;1;) (func (param i32))) + (import "env" "gas" (func (;0;) (type 1))) + (func (;1;) (type 0) (result i32) + (local i32 i32) + i32.const 3 + call 0 + block ;; label = @1 + i32.const 17 + call 0 + i32.const 0 + set_local 0 + i32.const 1 + set_local 1 + get_local 0 + get_local 1 + tee_local 0 + i32.add + set_local 1 + i32.const 1 + br_if 0 (;@1;) + get_local 0 + get_local 1 + tee_local 0 + i32.add + set_local 1 + end + get_local 1)) diff --git a/tests/fixtures/gas/branch.wat b/tests/fixtures/gas/branch.wat new file mode 100644 index 0000000..a3b18ce --- /dev/null +++ b/tests/fixtures/gas/branch.wat @@ -0,0 +1,27 @@ +(module + (func $fibonacci_with_break (result i32) + (local $x i32) (local $y i32) + + (block $unrolled_loop + (set_local $x (i32.const 0)) + (set_local $y (i32.const 1)) + + get_local $x + get_local $y + tee_local $x + i32.add + set_local $y + + i32.const 1 + br_if $unrolled_loop + + get_local $x + get_local $y + tee_local $x + i32.add + set_local $y + ) + + get_local $y + ) +) diff --git a/tests/fixtures/gas/call.wat b/tests/fixtures/gas/call.wat index a1ca8fb..ff08b2f 100644 --- a/tests/fixtures/gas/call.wat +++ b/tests/fixtures/gas/call.wat @@ -2,7 +2,6 @@ (func $add_locals (param $x i32) (param $y i32) (result i32) (local $t i32) - ;; This looks get_local $x get_local $y call $add diff --git a/tests/fixtures/gas/ifs.wat b/tests/fixtures/gas/ifs.wat index 4e74f50..a2dd3b8 100644 --- a/tests/fixtures/gas/ifs.wat +++ b/tests/fixtures/gas/ifs.wat @@ -1,9 +1,9 @@ (module (func (param $x i32) (result i32) (if (result i32) - (i32.const 1) - (i32.add (get_local $x) (i32.const 1)) - (i32.popcnt (get_local $x)) + (i32.const 1) + (then (i32.add (get_local $x) (i32.const 1))) + (else (i32.popcnt (get_local $x))) ) ) ) diff --git a/tests/fixtures/gas/simple.wat b/tests/fixtures/gas/simple.wat index cee2b6b..1f15d5f 100644 --- a/tests/fixtures/gas/simple.wat +++ b/tests/fixtures/gas/simple.wat @@ -1,9 +1,11 @@ (module (func (export "simple") (if (i32.const 1) - (loop - i32.const 123 - drop + (then + (loop + i32.const 123 + drop + ) ) ) )