From 3d2d891d7e1492d179cd8da7a618fbdd5efcca2c Mon Sep 17 00:00:00 2001 From: nsfisis Date: Sat, 16 Mar 2024 20:41:50 +0900 Subject: feat: add spec testsuites --- .../spec_testsuites/core/unreached-valid.wast | 63 ++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 tests/fixtures/spec_testsuites/core/unreached-valid.wast (limited to 'tests/fixtures/spec_testsuites/core/unreached-valid.wast') diff --git a/tests/fixtures/spec_testsuites/core/unreached-valid.wast b/tests/fixtures/spec_testsuites/core/unreached-valid.wast new file mode 100644 index 0000000..b7ebabf --- /dev/null +++ b/tests/fixtures/spec_testsuites/core/unreached-valid.wast @@ -0,0 +1,63 @@ +(module + + ;; Check that both sides of the select are evaluated + (func (export "select-trap-left") (param $cond i32) (result i32) + (select (unreachable) (i32.const 0) (local.get $cond)) + ) + (func (export "select-trap-right") (param $cond i32) (result i32) + (select (i32.const 0) (unreachable) (local.get $cond)) + ) + + (func (export "select-unreached") + (unreachable) (select) + (unreachable) (i32.const 0) (select) + (unreachable) (i32.const 0) (i32.const 0) (select) + (unreachable) (i32.const 0) (i32.const 0) (i32.const 0) (select) + (unreachable) (f32.const 0) (i32.const 0) (select) + (unreachable) + ) + + (func (export "select_unreached_result_1") (result i32) + (unreachable) (i32.add (select)) + ) + + (func (export "select_unreached_result_2") (result i64) + (unreachable) (i64.add (select (i64.const 0) (i32.const 0))) + ) + + (func (export "unreachable-num") + (unreachable) + (select) + (i32.eqz) + (drop) + ) + (func (export "unreachable-ref") + (unreachable) + (select) + (ref.is_null) + (drop) + ) +) + +(assert_trap (invoke "select-trap-left" (i32.const 1)) "unreachable") +(assert_trap (invoke "select-trap-left" (i32.const 0)) "unreachable") +(assert_trap (invoke "select-trap-right" (i32.const 1)) "unreachable") +(assert_trap (invoke "select-trap-right" (i32.const 0)) "unreachable") + +;; Validation after unreachable + +(module + (func (export "meet-bottom") + (block (result f64) + (block (result f32) + (unreachable) + (br_table 0 1 1 (i32.const 1)) + ) + (drop) + (f64.const 0) + ) + (drop) + ) +) + +(assert_trap (invoke "meet-bottom") "unreachable") -- cgit v1.2.3-70-g09d2