diff options
| author | nsfisis <nsfisis@gmail.com> | 2024-03-16 20:41:50 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2024-03-16 20:41:50 +0900 |
| commit | 3d2d891d7e1492d179cd8da7a618fbdd5efcca2c (patch) | |
| tree | 45367f35d98af1125a2197b3bc3dbc35700128d7 /tests/fixtures/spec_testsuites/core/unreached-valid.wast | |
| parent | 9b45796547c8022b98a9254320323d72aecd81cb (diff) | |
| download | php-waddiwasi-3d2d891d7e1492d179cd8da7a618fbdd5efcca2c.tar.gz php-waddiwasi-3d2d891d7e1492d179cd8da7a618fbdd5efcca2c.tar.zst php-waddiwasi-3d2d891d7e1492d179cd8da7a618fbdd5efcca2c.zip | |
feat: add spec testsuites
Diffstat (limited to 'tests/fixtures/spec_testsuites/core/unreached-valid.wast')
| -rw-r--r-- | tests/fixtures/spec_testsuites/core/unreached-valid.wast | 63 |
1 files changed, 63 insertions, 0 deletions
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") |
