summaryrefslogtreecommitdiff
path: root/examples/wast
diff options
context:
space:
mode:
Diffstat (limited to 'examples/wast')
-rw-r--r--examples/wast/i32.wast1704
-rw-r--r--examples/wast/select.wast531
2 files changed, 1383 insertions, 852 deletions
diff --git a/examples/wast/i32.wast b/examples/wast/i32.wast
index 2e8ab70..3329dc9 100644
--- a/examples/wast/i32.wast
+++ b/examples/wast/i32.wast
@@ -99,887 +99,887 @@
(assert_return (invoke "div_u" (i32.const 11) (i32.const 5)) (i32.const 2))
(assert_return (invoke "div_u" (i32.const 17) (i32.const 7)) (i32.const 2))
-(assert_trap (invoke "rem_s" (i32.const 1) (i32.const 0)) "integer divide by zero")
-(assert_trap (invoke "rem_s" (i32.const 0) (i32.const 0)) "integer divide by zero")
-(assert_return (invoke "rem_s" (i32.const 0x7fffffff) (i32.const -1)) (i32.const 0))
-(assert_return (invoke "rem_s" (i32.const 1) (i32.const 1)) (i32.const 0))
-(assert_return (invoke "rem_s" (i32.const 0) (i32.const 1)) (i32.const 0))
-(assert_return (invoke "rem_s" (i32.const 0) (i32.const -1)) (i32.const 0))
-(assert_return (invoke "rem_s" (i32.const -1) (i32.const -1)) (i32.const 0))
-(assert_return (invoke "rem_s" (i32.const 0x80000000) (i32.const -1)) (i32.const 0))
-(assert_return (invoke "rem_s" (i32.const 0x80000000) (i32.const 2)) (i32.const 0))
-(assert_return (invoke "rem_s" (i32.const 0x80000001) (i32.const 1000)) (i32.const -647))
-(assert_return (invoke "rem_s" (i32.const 5) (i32.const 2)) (i32.const 1))
-(assert_return (invoke "rem_s" (i32.const -5) (i32.const 2)) (i32.const -1))
-(assert_return (invoke "rem_s" (i32.const 5) (i32.const -2)) (i32.const 1))
-(assert_return (invoke "rem_s" (i32.const -5) (i32.const -2)) (i32.const -1))
-(assert_return (invoke "rem_s" (i32.const 7) (i32.const 3)) (i32.const 1))
-(assert_return (invoke "rem_s" (i32.const -7) (i32.const 3)) (i32.const -1))
-(assert_return (invoke "rem_s" (i32.const 7) (i32.const -3)) (i32.const 1))
-(assert_return (invoke "rem_s" (i32.const -7) (i32.const -3)) (i32.const -1))
-(assert_return (invoke "rem_s" (i32.const 11) (i32.const 5)) (i32.const 1))
-(assert_return (invoke "rem_s" (i32.const 17) (i32.const 7)) (i32.const 3))
+;; (assert_trap (invoke "rem_s" (i32.const 1) (i32.const 0)) "integer divide by zero")
+;; (assert_trap (invoke "rem_s" (i32.const 0) (i32.const 0)) "integer divide by zero")
+;; (assert_return (invoke "rem_s" (i32.const 0x7fffffff) (i32.const -1)) (i32.const 0))
+;; (assert_return (invoke "rem_s" (i32.const 1) (i32.const 1)) (i32.const 0))
+;; (assert_return (invoke "rem_s" (i32.const 0) (i32.const 1)) (i32.const 0))
+;; (assert_return (invoke "rem_s" (i32.const 0) (i32.const -1)) (i32.const 0))
+;; (assert_return (invoke "rem_s" (i32.const -1) (i32.const -1)) (i32.const 0))
+;; (assert_return (invoke "rem_s" (i32.const 0x80000000) (i32.const -1)) (i32.const 0))
+;; (assert_return (invoke "rem_s" (i32.const 0x80000000) (i32.const 2)) (i32.const 0))
+;; (assert_return (invoke "rem_s" (i32.const 0x80000001) (i32.const 1000)) (i32.const -647))
+;; (assert_return (invoke "rem_s" (i32.const 5) (i32.const 2)) (i32.const 1))
+;; (assert_return (invoke "rem_s" (i32.const -5) (i32.const 2)) (i32.const -1))
+;; (assert_return (invoke "rem_s" (i32.const 5) (i32.const -2)) (i32.const 1))
+;; (assert_return (invoke "rem_s" (i32.const -5) (i32.const -2)) (i32.const -1))
+;; (assert_return (invoke "rem_s" (i32.const 7) (i32.const 3)) (i32.const 1))
+;; (assert_return (invoke "rem_s" (i32.const -7) (i32.const 3)) (i32.const -1))
+;; (assert_return (invoke "rem_s" (i32.const 7) (i32.const -3)) (i32.const 1))
+;; (assert_return (invoke "rem_s" (i32.const -7) (i32.const -3)) (i32.const -1))
+;; (assert_return (invoke "rem_s" (i32.const 11) (i32.const 5)) (i32.const 1))
+;; (assert_return (invoke "rem_s" (i32.const 17) (i32.const 7)) (i32.const 3))
-(assert_trap (invoke "rem_u" (i32.const 1) (i32.const 0)) "integer divide by zero")
-(assert_trap (invoke "rem_u" (i32.const 0) (i32.const 0)) "integer divide by zero")
-(assert_return (invoke "rem_u" (i32.const 1) (i32.const 1)) (i32.const 0))
-(assert_return (invoke "rem_u" (i32.const 0) (i32.const 1)) (i32.const 0))
-(assert_return (invoke "rem_u" (i32.const -1) (i32.const -1)) (i32.const 0))
-(assert_return (invoke "rem_u" (i32.const 0x80000000) (i32.const -1)) (i32.const 0x80000000))
-(assert_return (invoke "rem_u" (i32.const 0x80000000) (i32.const 2)) (i32.const 0))
-(assert_return (invoke "rem_u" (i32.const 0x8ff00ff0) (i32.const 0x10001)) (i32.const 0x8001))
-(assert_return (invoke "rem_u" (i32.const 0x80000001) (i32.const 1000)) (i32.const 649))
-(assert_return (invoke "rem_u" (i32.const 5) (i32.const 2)) (i32.const 1))
-(assert_return (invoke "rem_u" (i32.const -5) (i32.const 2)) (i32.const 1))
-(assert_return (invoke "rem_u" (i32.const 5) (i32.const -2)) (i32.const 5))
-(assert_return (invoke "rem_u" (i32.const -5) (i32.const -2)) (i32.const -5))
-(assert_return (invoke "rem_u" (i32.const 7) (i32.const 3)) (i32.const 1))
-(assert_return (invoke "rem_u" (i32.const 11) (i32.const 5)) (i32.const 1))
-(assert_return (invoke "rem_u" (i32.const 17) (i32.const 7)) (i32.const 3))
+;; (assert_trap (invoke "rem_u" (i32.const 1) (i32.const 0)) "integer divide by zero")
+;; (assert_trap (invoke "rem_u" (i32.const 0) (i32.const 0)) "integer divide by zero")
+;; (assert_return (invoke "rem_u" (i32.const 1) (i32.const 1)) (i32.const 0))
+;; (assert_return (invoke "rem_u" (i32.const 0) (i32.const 1)) (i32.const 0))
+;; (assert_return (invoke "rem_u" (i32.const -1) (i32.const -1)) (i32.const 0))
+;; (assert_return (invoke "rem_u" (i32.const 0x80000000) (i32.const -1)) (i32.const 0x80000000))
+;; (assert_return (invoke "rem_u" (i32.const 0x80000000) (i32.const 2)) (i32.const 0))
+;; (assert_return (invoke "rem_u" (i32.const 0x8ff00ff0) (i32.const 0x10001)) (i32.const 0x8001))
+;; (assert_return (invoke "rem_u" (i32.const 0x80000001) (i32.const 1000)) (i32.const 649))
+;; (assert_return (invoke "rem_u" (i32.const 5) (i32.const 2)) (i32.const 1))
+;; (assert_return (invoke "rem_u" (i32.const -5) (i32.const 2)) (i32.const 1))
+;; (assert_return (invoke "rem_u" (i32.const 5) (i32.const -2)) (i32.const 5))
+;; (assert_return (invoke "rem_u" (i32.const -5) (i32.const -2)) (i32.const -5))
+;; (assert_return (invoke "rem_u" (i32.const 7) (i32.const 3)) (i32.const 1))
+;; (assert_return (invoke "rem_u" (i32.const 11) (i32.const 5)) (i32.const 1))
+;; (assert_return (invoke "rem_u" (i32.const 17) (i32.const 7)) (i32.const 3))
-(assert_return (invoke "and" (i32.const 1) (i32.const 0)) (i32.const 0))
-(assert_return (invoke "and" (i32.const 0) (i32.const 1)) (i32.const 0))
-(assert_return (invoke "and" (i32.const 1) (i32.const 1)) (i32.const 1))
-(assert_return (invoke "and" (i32.const 0) (i32.const 0)) (i32.const 0))
-(assert_return (invoke "and" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 0))
-(assert_return (invoke "and" (i32.const 0x7fffffff) (i32.const -1)) (i32.const 0x7fffffff))
-(assert_return (invoke "and" (i32.const 0xf0f0ffff) (i32.const 0xfffff0f0)) (i32.const 0xf0f0f0f0))
-(assert_return (invoke "and" (i32.const 0xffffffff) (i32.const 0xffffffff)) (i32.const 0xffffffff))
+;; (assert_return (invoke "and" (i32.const 1) (i32.const 0)) (i32.const 0))
+;; (assert_return (invoke "and" (i32.const 0) (i32.const 1)) (i32.const 0))
+;; (assert_return (invoke "and" (i32.const 1) (i32.const 1)) (i32.const 1))
+;; (assert_return (invoke "and" (i32.const 0) (i32.const 0)) (i32.const 0))
+;; (assert_return (invoke "and" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 0))
+;; (assert_return (invoke "and" (i32.const 0x7fffffff) (i32.const -1)) (i32.const 0x7fffffff))
+;; (assert_return (invoke "and" (i32.const 0xf0f0ffff) (i32.const 0xfffff0f0)) (i32.const 0xf0f0f0f0))
+;; (assert_return (invoke "and" (i32.const 0xffffffff) (i32.const 0xffffffff)) (i32.const 0xffffffff))
-(assert_return (invoke "or" (i32.const 1) (i32.const 0)) (i32.const 1))
-(assert_return (invoke "or" (i32.const 0) (i32.const 1)) (i32.const 1))
-(assert_return (invoke "or" (i32.const 1) (i32.const 1)) (i32.const 1))
-(assert_return (invoke "or" (i32.const 0) (i32.const 0)) (i32.const 0))
-(assert_return (invoke "or" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const -1))
-(assert_return (invoke "or" (i32.const 0x80000000) (i32.const 0)) (i32.const 0x80000000))
-(assert_return (invoke "or" (i32.const 0xf0f0ffff) (i32.const 0xfffff0f0)) (i32.const 0xffffffff))
-(assert_return (invoke "or" (i32.const 0xffffffff) (i32.const 0xffffffff)) (i32.const 0xffffffff))
+;; (assert_return (invoke "or" (i32.const 1) (i32.const 0)) (i32.const 1))
+;; (assert_return (invoke "or" (i32.const 0) (i32.const 1)) (i32.const 1))
+;; (assert_return (invoke "or" (i32.const 1) (i32.const 1)) (i32.const 1))
+;; (assert_return (invoke "or" (i32.const 0) (i32.const 0)) (i32.const 0))
+;; (assert_return (invoke "or" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const -1))
+;; (assert_return (invoke "or" (i32.const 0x80000000) (i32.const 0)) (i32.const 0x80000000))
+;; (assert_return (invoke "or" (i32.const 0xf0f0ffff) (i32.const 0xfffff0f0)) (i32.const 0xffffffff))
+;; (assert_return (invoke "or" (i32.const 0xffffffff) (i32.const 0xffffffff)) (i32.const 0xffffffff))
-(assert_return (invoke "xor" (i32.const 1) (i32.const 0)) (i32.const 1))
-(assert_return (invoke "xor" (i32.const 0) (i32.const 1)) (i32.const 1))
-(assert_return (invoke "xor" (i32.const 1) (i32.const 1)) (i32.const 0))
-(assert_return (invoke "xor" (i32.const 0) (i32.const 0)) (i32.const 0))
-(assert_return (invoke "xor" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const -1))
-(assert_return (invoke "xor" (i32.const 0x80000000) (i32.const 0)) (i32.const 0x80000000))
-(assert_return (invoke "xor" (i32.const -1) (i32.const 0x80000000)) (i32.const 0x7fffffff))
-(assert_return (invoke "xor" (i32.const -1) (i32.const 0x7fffffff)) (i32.const 0x80000000))
-(assert_return (invoke "xor" (i32.const 0xf0f0ffff) (i32.const 0xfffff0f0)) (i32.const 0x0f0f0f0f))
-(assert_return (invoke "xor" (i32.const 0xffffffff) (i32.const 0xffffffff)) (i32.const 0))
+;; (assert_return (invoke "xor" (i32.const 1) (i32.const 0)) (i32.const 1))
+;; (assert_return (invoke "xor" (i32.const 0) (i32.const 1)) (i32.const 1))
+;; (assert_return (invoke "xor" (i32.const 1) (i32.const 1)) (i32.const 0))
+;; (assert_return (invoke "xor" (i32.const 0) (i32.const 0)) (i32.const 0))
+;; (assert_return (invoke "xor" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const -1))
+;; (assert_return (invoke "xor" (i32.const 0x80000000) (i32.const 0)) (i32.const 0x80000000))
+;; (assert_return (invoke "xor" (i32.const -1) (i32.const 0x80000000)) (i32.const 0x7fffffff))
+;; (assert_return (invoke "xor" (i32.const -1) (i32.const 0x7fffffff)) (i32.const 0x80000000))
+;; (assert_return (invoke "xor" (i32.const 0xf0f0ffff) (i32.const 0xfffff0f0)) (i32.const 0x0f0f0f0f))
+;; (assert_return (invoke "xor" (i32.const 0xffffffff) (i32.const 0xffffffff)) (i32.const 0))
-(assert_return (invoke "shl" (i32.const 1) (i32.const 1)) (i32.const 2))
-(assert_return (invoke "shl" (i32.const 1) (i32.const 0)) (i32.const 1))
-(assert_return (invoke "shl" (i32.const 0x7fffffff) (i32.const 1)) (i32.const 0xfffffffe))
-(assert_return (invoke "shl" (i32.const 0xffffffff) (i32.const 1)) (i32.const 0xfffffffe))
-(assert_return (invoke "shl" (i32.const 0x80000000) (i32.const 1)) (i32.const 0))
-(assert_return (invoke "shl" (i32.const 0x40000000) (i32.const 1)) (i32.const 0x80000000))
-(assert_return (invoke "shl" (i32.const 1) (i32.const 31)) (i32.const 0x80000000))
-(assert_return (invoke "shl" (i32.const 1) (i32.const 32)) (i32.const 1))
-(assert_return (invoke "shl" (i32.const 1) (i32.const 33)) (i32.const 2))
-(assert_return (invoke "shl" (i32.const 1) (i32.const -1)) (i32.const 0x80000000))
-(assert_return (invoke "shl" (i32.const 1) (i32.const 0x7fffffff)) (i32.const 0x80000000))
+;; (assert_return (invoke "shl" (i32.const 1) (i32.const 1)) (i32.const 2))
+;; (assert_return (invoke "shl" (i32.const 1) (i32.const 0)) (i32.const 1))
+;; (assert_return (invoke "shl" (i32.const 0x7fffffff) (i32.const 1)) (i32.const 0xfffffffe))
+;; (assert_return (invoke "shl" (i32.const 0xffffffff) (i32.const 1)) (i32.const 0xfffffffe))
+;; (assert_return (invoke "shl" (i32.const 0x80000000) (i32.const 1)) (i32.const 0))
+;; (assert_return (invoke "shl" (i32.const 0x40000000) (i32.const 1)) (i32.const 0x80000000))
+;; (assert_return (invoke "shl" (i32.const 1) (i32.const 31)) (i32.const 0x80000000))
+;; (assert_return (invoke "shl" (i32.const 1) (i32.const 32)) (i32.const 1))
+;; (assert_return (invoke "shl" (i32.const 1) (i32.const 33)) (i32.const 2))
+;; (assert_return (invoke "shl" (i32.const 1) (i32.const -1)) (i32.const 0x80000000))
+;; (assert_return (invoke "shl" (i32.const 1) (i32.const 0x7fffffff)) (i32.const 0x80000000))
-(assert_return (invoke "shr_s" (i32.const 1) (i32.const 1)) (i32.const 0))
-(assert_return (invoke "shr_s" (i32.const 1) (i32.const 0)) (i32.const 1))
-(assert_return (invoke "shr_s" (i32.const -1) (i32.const 1)) (i32.const -1))
-(assert_return (invoke "shr_s" (i32.const 0x7fffffff) (i32.const 1)) (i32.const 0x3fffffff))
-(assert_return (invoke "shr_s" (i32.const 0x80000000) (i32.const 1)) (i32.const 0xc0000000))
-(assert_return (invoke "shr_s" (i32.const 0x40000000) (i32.const 1)) (i32.const 0x20000000))
-(assert_return (invoke "shr_s" (i32.const 1) (i32.const 32)) (i32.const 1))
-(assert_return (invoke "shr_s" (i32.const 1) (i32.const 33)) (i32.const 0))
-(assert_return (invoke "shr_s" (i32.const 1) (i32.const -1)) (i32.const 0))
-(assert_return (invoke "shr_s" (i32.const 1) (i32.const 0x7fffffff)) (i32.const 0))
-(assert_return (invoke "shr_s" (i32.const 1) (i32.const 0x80000000)) (i32.const 1))
-(assert_return (invoke "shr_s" (i32.const 0x80000000) (i32.const 31)) (i32.const -1))
-(assert_return (invoke "shr_s" (i32.const -1) (i32.const 32)) (i32.const -1))
-(assert_return (invoke "shr_s" (i32.const -1) (i32.const 33)) (i32.const -1))
-(assert_return (invoke "shr_s" (i32.const -1) (i32.const -1)) (i32.const -1))
-(assert_return (invoke "shr_s" (i32.const -1) (i32.const 0x7fffffff)) (i32.const -1))
-(assert_return (invoke "shr_s" (i32.const -1) (i32.const 0x80000000)) (i32.const -1))
+;; (assert_return (invoke "shr_s" (i32.const 1) (i32.const 1)) (i32.const 0))
+;; (assert_return (invoke "shr_s" (i32.const 1) (i32.const 0)) (i32.const 1))
+;; (assert_return (invoke "shr_s" (i32.const -1) (i32.const 1)) (i32.const -1))
+;; (assert_return (invoke "shr_s" (i32.const 0x7fffffff) (i32.const 1)) (i32.const 0x3fffffff))
+;; (assert_return (invoke "shr_s" (i32.const 0x80000000) (i32.const 1)) (i32.const 0xc0000000))
+;; (assert_return (invoke "shr_s" (i32.const 0x40000000) (i32.const 1)) (i32.const 0x20000000))
+;; (assert_return (invoke "shr_s" (i32.const 1) (i32.const 32)) (i32.const 1))
+;; (assert_return (invoke "shr_s" (i32.const 1) (i32.const 33)) (i32.const 0))
+;; (assert_return (invoke "shr_s" (i32.const 1) (i32.const -1)) (i32.const 0))
+;; (assert_return (invoke "shr_s" (i32.const 1) (i32.const 0x7fffffff)) (i32.const 0))
+;; (assert_return (invoke "shr_s" (i32.const 1) (i32.const 0x80000000)) (i32.const 1))
+;; (assert_return (invoke "shr_s" (i32.const 0x80000000) (i32.const 31)) (i32.const -1))
+;; (assert_return (invoke "shr_s" (i32.const -1) (i32.const 32)) (i32.const -1))
+;; (assert_return (invoke "shr_s" (i32.const -1) (i32.const 33)) (i32.const -1))
+;; (assert_return (invoke "shr_s" (i32.const -1) (i32.const -1)) (i32.const -1))
+;; (assert_return (invoke "shr_s" (i32.const -1) (i32.const 0x7fffffff)) (i32.const -1))
+;; (assert_return (invoke "shr_s" (i32.const -1) (i32.const 0x80000000)) (i32.const -1))
-(assert_return (invoke "shr_u" (i32.const 1) (i32.const 1)) (i32.const 0))
-(assert_return (invoke "shr_u" (i32.const 1) (i32.const 0)) (i32.const 1))
-(assert_return (invoke "shr_u" (i32.const -1) (i32.const 1)) (i32.const 0x7fffffff))
-(assert_return (invoke "shr_u" (i32.const 0x7fffffff) (i32.const 1)) (i32.const 0x3fffffff))
-(assert_return (invoke "shr_u" (i32.const 0x80000000) (i32.const 1)) (i32.const 0x40000000))
-(assert_return (invoke "shr_u" (i32.const 0x40000000) (i32.const 1)) (i32.const 0x20000000))
-(assert_return (invoke "shr_u" (i32.const 1) (i32.const 32)) (i32.const 1))
-(assert_return (invoke "shr_u" (i32.const 1) (i32.const 33)) (i32.const 0))
-(assert_return (invoke "shr_u" (i32.const 1) (i32.const -1)) (i32.const 0))
-(assert_return (invoke "shr_u" (i32.const 1) (i32.const 0x7fffffff)) (i32.const 0))
-(assert_return (invoke "shr_u" (i32.const 1) (i32.const 0x80000000)) (i32.const 1))
-(assert_return (invoke "shr_u" (i32.const 0x80000000) (i32.const 31)) (i32.const 1))
-(assert_return (invoke "shr_u" (i32.const -1) (i32.const 32)) (i32.const -1))
-(assert_return (invoke "shr_u" (i32.const -1) (i32.const 33)) (i32.const 0x7fffffff))
-(assert_return (invoke "shr_u" (i32.const -1) (i32.const -1)) (i32.const 1))
-(assert_return (invoke "shr_u" (i32.const -1) (i32.const 0x7fffffff)) (i32.const 1))
-(assert_return (invoke "shr_u" (i32.const -1) (i32.const 0x80000000)) (i32.const -1))
+;; (assert_return (invoke "shr_u" (i32.const 1) (i32.const 1)) (i32.const 0))
+;; (assert_return (invoke "shr_u" (i32.const 1) (i32.const 0)) (i32.const 1))
+;; (assert_return (invoke "shr_u" (i32.const -1) (i32.const 1)) (i32.const 0x7fffffff))
+;; (assert_return (invoke "shr_u" (i32.const 0x7fffffff) (i32.const 1)) (i32.const 0x3fffffff))
+;; (assert_return (invoke "shr_u" (i32.const 0x80000000) (i32.const 1)) (i32.const 0x40000000))
+;; (assert_return (invoke "shr_u" (i32.const 0x40000000) (i32.const 1)) (i32.const 0x20000000))
+;; (assert_return (invoke "shr_u" (i32.const 1) (i32.const 32)) (i32.const 1))
+;; (assert_return (invoke "shr_u" (i32.const 1) (i32.const 33)) (i32.const 0))
+;; (assert_return (invoke "shr_u" (i32.const 1) (i32.const -1)) (i32.const 0))
+;; (assert_return (invoke "shr_u" (i32.const 1) (i32.const 0x7fffffff)) (i32.const 0))
+;; (assert_return (invoke "shr_u" (i32.const 1) (i32.const 0x80000000)) (i32.const 1))
+;; (assert_return (invoke "shr_u" (i32.const 0x80000000) (i32.const 31)) (i32.const 1))
+;; (assert_return (invoke "shr_u" (i32.const -1) (i32.const 32)) (i32.const -1))
+;; (assert_return (invoke "shr_u" (i32.const -1) (i32.const 33)) (i32.const 0x7fffffff))
+;; (assert_return (invoke "shr_u" (i32.const -1) (i32.const -1)) (i32.const 1))
+;; (assert_return (invoke "shr_u" (i32.const -1) (i32.const 0x7fffffff)) (i32.const 1))
+;; (assert_return (invoke "shr_u" (i32.const -1) (i32.const 0x80000000)) (i32.const -1))
-(assert_return (invoke "rotl" (i32.const 1) (i32.const 1)) (i32.const 2))
-(assert_return (invoke "rotl" (i32.const 1) (i32.const 0)) (i32.const 1))
-(assert_return (invoke "rotl" (i32.const -1) (i32.const 1)) (i32.const -1))
-(assert_return (invoke "rotl" (i32.const 1) (i32.const 32)) (i32.const 1))
-(assert_return (invoke "rotl" (i32.const 0xabcd9876) (i32.const 1)) (i32.const 0x579b30ed))
-(assert_return (invoke "rotl" (i32.const 0xfe00dc00) (i32.const 4)) (i32.const 0xe00dc00f))
-(assert_return (invoke "rotl" (i32.const 0xb0c1d2e3) (i32.const 5)) (i32.const 0x183a5c76))
-(assert_return (invoke "rotl" (i32.const 0x00008000) (i32.const 37)) (i32.const 0x00100000))
-(assert_return (invoke "rotl" (i32.const 0xb0c1d2e3) (i32.const 0xff05)) (i32.const 0x183a5c76))
-(assert_return (invoke "rotl" (i32.const 0x769abcdf) (i32.const 0xffffffed)) (i32.const 0x579beed3))
-(assert_return (invoke "rotl" (i32.const 0x769abcdf) (i32.const 0x8000000d)) (i32.const 0x579beed3))
-(assert_return (invoke "rotl" (i32.const 1) (i32.const 31)) (i32.const 0x80000000))
-(assert_return (invoke "rotl" (i32.const 0x80000000) (i32.const 1)) (i32.const 1))
+;; (assert_return (invoke "rotl" (i32.const 1) (i32.const 1)) (i32.const 2))
+;; (assert_return (invoke "rotl" (i32.const 1) (i32.const 0)) (i32.const 1))
+;; (assert_return (invoke "rotl" (i32.const -1) (i32.const 1)) (i32.const -1))
+;; (assert_return (invoke "rotl" (i32.const 1) (i32.const 32)) (i32.const 1))
+;; (assert_return (invoke "rotl" (i32.const 0xabcd9876) (i32.const 1)) (i32.const 0x579b30ed))
+;; (assert_return (invoke "rotl" (i32.const 0xfe00dc00) (i32.const 4)) (i32.const 0xe00dc00f))
+;; (assert_return (invoke "rotl" (i32.const 0xb0c1d2e3) (i32.const 5)) (i32.const 0x183a5c76))
+;; (assert_return (invoke "rotl" (i32.const 0x00008000) (i32.const 37)) (i32.const 0x00100000))
+;; (assert_return (invoke "rotl" (i32.const 0xb0c1d2e3) (i32.const 0xff05)) (i32.const 0x183a5c76))
+;; (assert_return (invoke "rotl" (i32.const 0x769abcdf) (i32.const 0xffffffed)) (i32.const 0x579beed3))
+;; (assert_return (invoke "rotl" (i32.const 0x769abcdf) (i32.const 0x8000000d)) (i32.const 0x579beed3))
+;; (assert_return (invoke "rotl" (i32.const 1) (i32.const 31)) (i32.const 0x80000000))
+;; (assert_return (invoke "rotl" (i32.const 0x80000000) (i32.const 1)) (i32.const 1))
-(assert_return (invoke "rotr" (i32.const 1) (i32.const 1)) (i32.const 0x80000000))
-(assert_return (invoke "rotr" (i32.const 1) (i32.const 0)) (i32.const 1))
-(assert_return (invoke "rotr" (i32.const -1) (i32.const 1)) (i32.const -1))
-(assert_return (invoke "rotr" (i32.const 1) (i32.const 32)) (i32.const 1))
-(assert_return (invoke "rotr" (i32.const 0xff00cc00) (i32.const 1)) (i32.const 0x7f806600))
-(assert_return (invoke "rotr" (i32.const 0x00080000) (i32.const 4)) (i32.const 0x00008000))
-(assert_return (invoke "rotr" (i32.const 0xb0c1d2e3) (i32.const 5)) (i32.const 0x1d860e97))
-(assert_return (invoke "rotr" (i32.const 0x00008000) (i32.const 37)) (i32.const 0x00000400))
-(assert_return (invoke "rotr" (i32.const 0xb0c1d2e3) (i32.const 0xff05)) (i32.const 0x1d860e97))
-(assert_return (invoke "rotr" (i32.const 0x769abcdf) (i32.const 0xffffffed)) (i32.const 0xe6fbb4d5))
-(assert_return (invoke "rotr" (i32.const 0x769abcdf) (i32.const 0x8000000d)) (i32.const 0xe6fbb4d5))
-(assert_return (invoke "rotr" (i32.const 1) (i32.const 31)) (i32.const 2))
-(assert_return (invoke "rotr" (i32.const 0x80000000) (i32.const 31)) (i32.const 1))
+;; (assert_return (invoke "rotr" (i32.const 1) (i32.const 1)) (i32.const 0x80000000))
+;; (assert_return (invoke "rotr" (i32.const 1) (i32.const 0)) (i32.const 1))
+;; (assert_return (invoke "rotr" (i32.const -1) (i32.const 1)) (i32.const -1))
+;; (assert_return (invoke "rotr" (i32.const 1) (i32.const 32)) (i32.const 1))
+;; (assert_return (invoke "rotr" (i32.const 0xff00cc00) (i32.const 1)) (i32.const 0x7f806600))
+;; (assert_return (invoke "rotr" (i32.const 0x00080000) (i32.const 4)) (i32.const 0x00008000))
+;; (assert_return (invoke "rotr" (i32.const 0xb0c1d2e3) (i32.const 5)) (i32.const 0x1d860e97))
+;; (assert_return (invoke "rotr" (i32.const 0x00008000) (i32.const 37)) (i32.const 0x00000400))
+;; (assert_return (invoke "rotr" (i32.const 0xb0c1d2e3) (i32.const 0xff05)) (i32.const 0x1d860e97))
+;; (assert_return (invoke "rotr" (i32.const 0x769abcdf) (i32.const 0xffffffed)) (i32.const 0xe6fbb4d5))
+;; (assert_return (invoke "rotr" (i32.const 0x769abcdf) (i32.const 0x8000000d)) (i32.const 0xe6fbb4d5))
+;; (assert_return (invoke "rotr" (i32.const 1) (i32.const 31)) (i32.const 2))
+;; (assert_return (invoke "rotr" (i32.const 0x80000000) (i32.const 31)) (i32.const 1))
-(assert_return (invoke "clz" (i32.const 0xffffffff)) (i32.const 0))
-(assert_return (invoke "clz" (i32.const 0)) (i32.const 32))
-(assert_return (invoke "clz" (i32.const 0x00008000)) (i32.const 16))
-(assert_return (invoke "clz" (i32.const 0xff)) (i32.const 24))
-(assert_return (invoke "clz" (i32.const 0x80000000)) (i32.const 0))
-(assert_return (invoke "clz" (i32.const 1)) (i32.const 31))
-(assert_return (invoke "clz" (i32.const 2)) (i32.const 30))
-(assert_return (invoke "clz" (i32.const 0x7fffffff)) (i32.const 1))
+;; (assert_return (invoke "clz" (i32.const 0xffffffff)) (i32.const 0))
+;; (assert_return (invoke "clz" (i32.const 0)) (i32.const 32))
+;; (assert_return (invoke "clz" (i32.const 0x00008000)) (i32.const 16))
+;; (assert_return (invoke "clz" (i32.const 0xff)) (i32.const 24))
+;; (assert_return (invoke "clz" (i32.const 0x80000000)) (i32.const 0))
+;; (assert_return (invoke "clz" (i32.const 1)) (i32.const 31))
+;; (assert_return (invoke "clz" (i32.const 2)) (i32.const 30))
+;; (assert_return (invoke "clz" (i32.const 0x7fffffff)) (i32.const 1))
-(assert_return (invoke "ctz" (i32.const -1)) (i32.const 0))
-(assert_return (invoke "ctz" (i32.const 0)) (i32.const 32))
-(assert_return (invoke "ctz" (i32.const 0x00008000)) (i32.const 15))
-(assert_return (invoke "ctz" (i32.const 0x00010000)) (i32.const 16))
-(assert_return (invoke "ctz" (i32.const 0x80000000)) (i32.const 31))
-(assert_return (invoke "ctz" (i32.const 0x7fffffff)) (i32.const 0))
+;; (assert_return (invoke "ctz" (i32.const -1)) (i32.const 0))
+;; (assert_return (invoke "ctz" (i32.const 0)) (i32.const 32))
+;; (assert_return (invoke "ctz" (i32.const 0x00008000)) (i32.const 15))
+;; (assert_return (invoke "ctz" (i32.const 0x00010000)) (i32.const 16))
+;; (assert_return (invoke "ctz" (i32.const 0x80000000)) (i32.const 31))
+;; (assert_return (invoke "ctz" (i32.const 0x7fffffff)) (i32.const 0))
-(assert_return (invoke "popcnt" (i32.const -1)) (i32.const 32))
-(assert_return (invoke "popcnt" (i32.const 0)) (i32.const 0))
-(assert_return (invoke "popcnt" (i32.const 0x00008000)) (i32.const 1))
-(assert_return (invoke "popcnt" (i32.const 0x80008000)) (i32.const 2))
-(assert_return (invoke "popcnt" (i32.const 0x7fffffff)) (i32.const 31))
-(assert_return (invoke "popcnt" (i32.const 0xAAAAAAAA)) (i32.const 16))
-(assert_return (invoke "popcnt" (i32.const 0x55555555)) (i32.const 16))
-(assert_return (invoke "popcnt" (i32.const 0xDEADBEEF)) (i32.const 24))
+;; (assert_return (invoke "popcnt" (i32.const -1)) (i32.const 32))
+;; (assert_return (invoke "popcnt" (i32.const 0)) (i32.const 0))
+;; (assert_return (invoke "popcnt" (i32.const 0x00008000)) (i32.const 1))
+;; (assert_return (invoke "popcnt" (i32.const 0x80008000)) (i32.const 2))
+;; (assert_return (invoke "popcnt" (i32.const 0x7fffffff)) (i32.const 31))
+;; (assert_return (invoke "popcnt" (i32.const 0xAAAAAAAA)) (i32.const 16))
+;; (assert_return (invoke "popcnt" (i32.const 0x55555555)) (i32.const 16))
+;; (assert_return (invoke "popcnt" (i32.const 0xDEADBEEF)) (i32.const 24))
-(assert_return (invoke "extend8_s" (i32.const 0)) (i32.const 0))
-(assert_return (invoke "extend8_s" (i32.const 0x7f)) (i32.const 127))
-(assert_return (invoke "extend8_s" (i32.const 0x80)) (i32.const -128))
-(assert_return (invoke "extend8_s" (i32.const 0xff)) (i32.const -1))
-(assert_return (invoke "extend8_s" (i32.const 0x012345_00)) (i32.const 0))
-(assert_return (invoke "extend8_s" (i32.const 0xfedcba_80)) (i32.const -0x80))
-(assert_return (invoke "extend8_s" (i32.const -1)) (i32.const -1))
+;; (assert_return (invoke "extend8_s" (i32.const 0)) (i32.const 0))
+;; (assert_return (invoke "extend8_s" (i32.const 0x7f)) (i32.const 127))
+;; (assert_return (invoke "extend8_s" (i32.const 0x80)) (i32.const -128))
+;; (assert_return (invoke "extend8_s" (i32.const 0xff)) (i32.const -1))
+;; (assert_return (invoke "extend8_s" (i32.const 0x012345_00)) (i32.const 0))
+;; (assert_return (invoke "extend8_s" (i32.const 0xfedcba_80)) (i32.const -0x80))
+;; (assert_return (invoke "extend8_s" (i32.const -1)) (i32.const -1))
-(assert_return (invoke "extend16_s" (i32.const 0)) (i32.const 0))
-(assert_return (invoke "extend16_s" (i32.const 0x7fff)) (i32.const 32767))
-(assert_return (invoke "extend16_s" (i32.const 0x8000)) (i32.const -32768))
-(assert_return (invoke "extend16_s" (i32.const 0xffff)) (i32.const -1))
-(assert_return (invoke "extend16_s" (i32.const 0x0123_0000)) (i32.const 0))
-(assert_return (invoke "extend16_s" (i32.const 0xfedc_8000)) (i32.const -0x8000))
-(assert_return (invoke "extend16_s" (i32.const -1)) (i32.const -1))
+;; (assert_return (invoke "extend16_s" (i32.const 0)) (i32.const 0))
+;; (assert_return (invoke "extend16_s" (i32.const 0x7fff)) (i32.const 32767))
+;; (assert_return (invoke "extend16_s" (i32.const 0x8000)) (i32.const -32768))
+;; (assert_return (invoke "extend16_s" (i32.const 0xffff)) (i32.const -1))
+;; (assert_return (invoke "extend16_s" (i32.const 0x0123_0000)) (i32.const 0))
+;; (assert_return (invoke "extend16_s" (i32.const 0xfedc_8000)) (i32.const -0x8000))
+;; (assert_return (invoke "extend16_s" (i32.const -1)) (i32.const -1))
-(assert_return (invoke "eqz" (i32.const 0)) (i32.const 1))
-(assert_return (invoke "eqz" (i32.const 1)) (i32.const 0))
-(assert_return (invoke "eqz" (i32.const 0x80000000)) (i32.const 0))
-(assert_return (invoke "eqz" (i32.const 0x7fffffff)) (i32.const 0))
-(assert_return (invoke "eqz" (i32.const 0xffffffff)) (i32.const 0))
+;; (assert_return (invoke "eqz" (i32.const 0)) (i32.const 1))
+;; (assert_return (invoke "eqz" (i32.const 1)) (i32.const 0))
+;; (assert_return (invoke "eqz" (i32.const 0x80000000)) (i32.const 0))
+;; (assert_return (invoke "eqz" (i32.const 0x7fffffff)) (i32.const 0))
+;; (assert_return (invoke "eqz" (i32.const 0xffffffff)) (i32.const 0))
-(assert_return (invoke "eq" (i32.const 0) (i32.const 0)) (i32.const 1))
-(assert_return (invoke "eq" (i32.const 1) (i32.const 1)) (i32.const 1))
-(assert_return (invoke "eq" (i32.const -1) (i32.const 1)) (i32.const 0))
-(assert_return (invoke "eq" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 1))
-(assert_return (invoke "eq" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 1))
-(assert_return (invoke "eq" (i32.const -1) (i32.const -1)) (i32.const 1))
-(assert_return (invoke "eq" (i32.const 1) (i32.const 0)) (i32.const 0))
-(assert_return (invoke "eq" (i32.const 0) (i32.const 1)) (i32.const 0))
-(assert_return (invoke "eq" (i32.const 0x80000000) (i32.const 0)) (i32.const 0))
-(assert_return (invoke "eq" (i32.const 0) (i32.const 0x80000000)) (i32.const 0))
-(assert_return (invoke "eq" (i32.const 0x80000000) (i32.const -1)) (i32.const 0))
-(assert_return (invoke "eq" (i32.const -1) (i32.const 0x80000000)) (i32.const 0))
-(assert_return (invoke "eq" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 0))
-(assert_return (invoke "eq" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 0))
+;; (assert_return (invoke "eq" (i32.const 0) (i32.const 0)) (i32.const 1))
+;; (assert_return (invoke "eq" (i32.const 1) (i32.const 1)) (i32.const 1))
+;; (assert_return (invoke "eq" (i32.const -1) (i32.const 1)) (i32.const 0))
+;; (assert_return (invoke "eq" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 1))
+;; (assert_return (invoke "eq" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 1))
+;; (assert_return (invoke "eq" (i32.const -1) (i32.const -1)) (i32.const 1))
+;; (assert_return (invoke "eq" (i32.const 1) (i32.const 0)) (i32.const 0))
+;; (assert_return (invoke "eq" (i32.const 0) (i32.const 1)) (i32.const 0))
+;; (assert_return (invoke "eq" (i32.const 0x80000000) (i32.const 0)) (i32.const 0))
+;; (assert_return (invoke "eq" (i32.const 0) (i32.const 0x80000000)) (i32.const 0))
+;; (assert_return (invoke "eq" (i32.const 0x80000000) (i32.const -1)) (i32.const 0))
+;; (assert_return (invoke "eq" (i32.const -1) (i32.const 0x80000000)) (i32.const 0))
+;; (assert_return (invoke "eq" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 0))
+;; (assert_return (invoke "eq" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 0))
-(assert_return (invoke "ne" (i32.const 0) (i32.const 0)) (i32.const 0))
-(assert_return (invoke "ne" (i32.const 1) (i32.const 1)) (i32.const 0))
-(assert_return (invoke "ne" (i32.const -1) (i32.const 1)) (i32.const 1))
-(assert_return (invoke "ne" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 0))
-(assert_return (invoke "ne" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 0))
-(assert_return (invoke "ne" (i32.const -1) (i32.const -1)) (i32.const 0))
-(assert_return (invoke "ne" (i32.const 1) (i32.const 0)) (i32.const 1))
-(assert_return (invoke "ne" (i32.const 0) (i32.const 1)) (i32.const 1))
-(assert_return (invoke "ne" (i32.const 0x80000000) (i32.const 0)) (i32.const 1))
-(assert_return (invoke "ne" (i32.const 0) (i32.const 0x80000000)) (i32.const 1))
-(assert_return (invoke "ne" (i32.const 0x80000000) (i32.const -1)) (i32.const 1))
-(assert_return (invoke "ne" (i32.const -1) (i32.const 0x80000000)) (i32.const 1))
-(assert_return (invoke "ne" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 1))
-(assert_return (invoke "ne" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 1))
+;; (assert_return (invoke "ne" (i32.const 0) (i32.const 0)) (i32.const 0))
+;; (assert_return (invoke "ne" (i32.const 1) (i32.const 1)) (i32.const 0))
+;; (assert_return (invoke "ne" (i32.const -1) (i32.const 1)) (i32.const 1))
+;; (assert_return (invoke "ne" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 0))
+;; (assert_return (invoke "ne" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 0))
+;; (assert_return (invoke "ne" (i32.const -1) (i32.const -1)) (i32.const 0))
+;; (assert_return (invoke "ne" (i32.const 1) (i32.const 0)) (i32.const 1))
+;; (assert_return (invoke "ne" (i32.const 0) (i32.const 1)) (i32.const 1))
+;; (assert_return (invoke "ne" (i32.const 0x80000000) (i32.const 0)) (i32.const 1))
+;; (assert_return (invoke "ne" (i32.const 0) (i32.const 0x80000000)) (i32.const 1))
+;; (assert_return (invoke "ne" (i32.const 0x80000000) (i32.const -1)) (i32.const 1))
+;; (assert_return (invoke "ne" (i32.const -1) (i32.const 0x80000000)) (i32.const 1))
+;; (assert_return (invoke "ne" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 1))
+;; (assert_return (invoke "ne" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 1))
-(assert_return (invoke "lt_s" (i32.const 0) (i32.const 0)) (i32.const 0))
-(assert_return (invoke "lt_s" (i32.const 1) (i32.const 1)) (i32.const 0))
-(assert_return (invoke "lt_s" (i32.const -1) (i32.const 1)) (i32.const 1))
-(assert_return (invoke "lt_s" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 0))
-(assert_return (invoke "lt_s" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 0))
-(assert_return (invoke "lt_s" (i32.const -1) (i32.const -1)) (i32.const 0))
-(assert_return (invoke "lt_s" (i32.const 1) (i32.const 0)) (i32.const 0))
-(assert_return (invoke "lt_s" (i32.const 0) (i32.const 1)) (i32.const 1))
-(assert_return (invoke "lt_s" (i32.const 0x80000000) (i32.const 0)) (i32.const 1))
-(assert_return (invoke "lt_s" (i32.const 0) (i32.const 0x80000000)) (i32.const 0))
-(assert_return (invoke "lt_s" (i32.const 0x80000000) (i32.const -1)) (i32.const 1))
-(assert_return (invoke "lt_s" (i32.const -1) (i32.const 0x80000000)) (i32.const 0))
-(assert_return (invoke "lt_s" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 1))
-(assert_return (invoke "lt_s" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 0))
+;; (assert_return (invoke "lt_s" (i32.const 0) (i32.const 0)) (i32.const 0))
+;; (assert_return (invoke "lt_s" (i32.const 1) (i32.const 1)) (i32.const 0))
+;; (assert_return (invoke "lt_s" (i32.const -1) (i32.const 1)) (i32.const 1))
+;; (assert_return (invoke "lt_s" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 0))
+;; (assert_return (invoke "lt_s" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 0))
+;; (assert_return (invoke "lt_s" (i32.const -1) (i32.const -1)) (i32.const 0))
+;; (assert_return (invoke "lt_s" (i32.const 1) (i32.const 0)) (i32.const 0))
+;; (assert_return (invoke "lt_s" (i32.const 0) (i32.const 1)) (i32.const 1))
+;; (assert_return (invoke "lt_s" (i32.const 0x80000000) (i32.const 0)) (i32.const 1))
+;; (assert_return (invoke "lt_s" (i32.const 0) (i32.const 0x80000000)) (i32.const 0))
+;; (assert_return (invoke "lt_s" (i32.const 0x80000000) (i32.const -1)) (i32.const 1))
+;; (assert_return (invoke "lt_s" (i32.const -1) (i32.const 0x80000000)) (i32.const 0))
+;; (assert_return (invoke "lt_s" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 1))
+;; (assert_return (invoke "lt_s" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 0))
-(assert_return (invoke "lt_u" (i32.const 0) (i32.const 0)) (i32.const 0))
-(assert_return (invoke "lt_u" (i32.const 1) (i32.const 1)) (i32.const 0))
-(assert_return (invoke "lt_u" (i32.const -1) (i32.const 1)) (i32.const 0))
-(assert_return (invoke "lt_u" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 0))
-(assert_return (invoke "lt_u" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 0))
-(assert_return (invoke "lt_u" (i32.const -1) (i32.const -1)) (i32.const 0))
-(assert_return (invoke "lt_u" (i32.const 1) (i32.const 0)) (i32.const 0))
-(assert_return (invoke "lt_u" (i32.const 0) (i32.const 1)) (i32.const 1))
-(assert_return (invoke "lt_u" (i32.const 0x80000000) (i32.const 0)) (i32.const 0))
-(assert_return (invoke "lt_u" (i32.const 0) (i32.const 0x80000000)) (i32.const 1))
-(assert_return (invoke "lt_u" (i32.const 0x80000000) (i32.const -1)) (i32.const 1))
-(assert_return (invoke "lt_u" (i32.const -1) (i32.const 0x80000000)) (i32.const 0))
-(assert_return (invoke "lt_u" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 0))
-(assert_return (invoke "lt_u" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 1))
+;; (assert_return (invoke "lt_u" (i32.const 0) (i32.const 0)) (i32.const 0))
+;; (assert_return (invoke "lt_u" (i32.const 1) (i32.const 1)) (i32.const 0))
+;; (assert_return (invoke "lt_u" (i32.const -1) (i32.const 1)) (i32.const 0))
+;; (assert_return (invoke "lt_u" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 0))
+;; (assert_return (invoke "lt_u" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 0))
+;; (assert_return (invoke "lt_u" (i32.const -1) (i32.const -1)) (i32.const 0))
+;; (assert_return (invoke "lt_u" (i32.const 1) (i32.const 0)) (i32.const 0))
+;; (assert_return (invoke "lt_u" (i32.const 0) (i32.const 1)) (i32.const 1))
+;; (assert_return (invoke "lt_u" (i32.const 0x80000000) (i32.const 0)) (i32.const 0))
+;; (assert_return (invoke "lt_u" (i32.const 0) (i32.const 0x80000000)) (i32.const 1))
+;; (assert_return (invoke "lt_u" (i32.const 0x80000000) (i32.const -1)) (i32.const 1))
+;; (assert_return (invoke "lt_u" (i32.const -1) (i32.const 0x80000000)) (i32.const 0))
+;; (assert_return (invoke "lt_u" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 0))
+;; (assert_return (invoke "lt_u" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 1))
-(assert_return (invoke "le_s" (i32.const 0) (i32.const 0)) (i32.const 1))
-(assert_return (invoke "le_s" (i32.const 1) (i32.const 1)) (i32.const 1))
-(assert_return (invoke "le_s" (i32.const -1) (i32.const 1)) (i32.const 1))
-(assert_return (invoke "le_s" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 1))
-(assert_return (invoke "le_s" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 1))
-(assert_return (invoke "le_s" (i32.const -1) (i32.const -1)) (i32.const 1))
-(assert_return (invoke "le_s" (i32.const 1) (i32.const 0)) (i32.const 0))
-(assert_return (invoke "le_s" (i32.const 0) (i32.const 1)) (i32.const 1))
-(assert_return (invoke "le_s" (i32.const 0x80000000) (i32.const 0)) (i32.const 1))
-(assert_return (invoke "le_s" (i32.const 0) (i32.const 0x80000000)) (i32.const 0))
-(assert_return (invoke "le_s" (i32.const 0x80000000) (i32.const -1)) (i32.const 1))
-(assert_return (invoke "le_s" (i32.const -1) (i32.const 0x80000000)) (i32.const 0))
-(assert_return (invoke "le_s" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 1))
-(assert_return (invoke "le_s" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 0))
+;; (assert_return (invoke "le_s" (i32.const 0) (i32.const 0)) (i32.const 1))
+;; (assert_return (invoke "le_s" (i32.const 1) (i32.const 1)) (i32.const 1))
+;; (assert_return (invoke "le_s" (i32.const -1) (i32.const 1)) (i32.const 1))
+;; (assert_return (invoke "le_s" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 1))
+;; (assert_return (invoke "le_s" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 1))
+;; (assert_return (invoke "le_s" (i32.const -1) (i32.const -1)) (i32.const 1))
+;; (assert_return (invoke "le_s" (i32.const 1) (i32.const 0)) (i32.const 0))
+;; (assert_return (invoke "le_s" (i32.const 0) (i32.const 1)) (i32.const 1))
+;; (assert_return (invoke "le_s" (i32.const 0x80000000) (i32.const 0)) (i32.const 1))
+;; (assert_return (invoke "le_s" (i32.const 0) (i32.const 0x80000000)) (i32.const 0))
+;; (assert_return (invoke "le_s" (i32.const 0x80000000) (i32.const -1)) (i32.const 1))
+;; (assert_return (invoke "le_s" (i32.const -1) (i32.const 0x80000000)) (i32.const 0))
+;; (assert_return (invoke "le_s" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 1))
+;; (assert_return (invoke "le_s" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 0))
-(assert_return (invoke "le_u" (i32.const 0) (i32.const 0)) (i32.const 1))
-(assert_return (invoke "le_u" (i32.const 1) (i32.const 1)) (i32.const 1))
-(assert_return (invoke "le_u" (i32.const -1) (i32.const 1)) (i32.const 0))
-(assert_return (invoke "le_u" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 1))
-(assert_return (invoke "le_u" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 1))
-(assert_return (invoke "le_u" (i32.const -1) (i32.const -1)) (i32.const 1))
-(assert_return (invoke "le_u" (i32.const 1) (i32.const 0)) (i32.const 0))
-(assert_return (invoke "le_u" (i32.const 0) (i32.const 1)) (i32.const 1))
-(assert_return (invoke "le_u" (i32.const 0x80000000) (i32.const 0)) (i32.const 0))
-(assert_return (invoke "le_u" (i32.const 0) (i32.const 0x80000000)) (i32.const 1))
-(assert_return (invoke "le_u" (i32.const 0x80000000) (i32.const -1)) (i32.const 1))
-(assert_return (invoke "le_u" (i32.const -1) (i32.const 0x80000000)) (i32.const 0))
-(assert_return (invoke "le_u" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 0))
-(assert_return (invoke "le_u" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 1))
+;; (assert_return (invoke "le_u" (i32.const 0) (i32.const 0)) (i32.const 1))
+;; (assert_return (invoke "le_u" (i32.const 1) (i32.const 1)) (i32.const 1))
+;; (assert_return (invoke "le_u" (i32.const -1) (i32.const 1)) (i32.const 0))
+;; (assert_return (invoke "le_u" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 1))
+;; (assert_return (invoke "le_u" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 1))
+;; (assert_return (invoke "le_u" (i32.const -1) (i32.const -1)) (i32.const 1))
+;; (assert_return (invoke "le_u" (i32.const 1) (i32.const 0)) (i32.const 0))
+;; (assert_return (invoke "le_u" (i32.const 0) (i32.const 1)) (i32.const 1))
+;; (assert_return (invoke "le_u" (i32.const 0x80000000) (i32.const 0)) (i32.const 0))
+;; (assert_return (invoke "le_u" (i32.const 0) (i32.const 0x80000000)) (i32.const 1))
+;; (assert_return (invoke "le_u" (i32.const 0x80000000) (i32.const -1)) (i32.const 1))
+;; (assert_return (invoke "le_u" (i32.const -1) (i32.const 0x80000000)) (i32.const 0))
+;; (assert_return (invoke "le_u" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 0))
+;; (assert_return (invoke "le_u" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 1))
-(assert_return (invoke "gt_s" (i32.const 0) (i32.const 0)) (i32.const 0))
-(assert_return (invoke "gt_s" (i32.const 1) (i32.const 1)) (i32.const 0))
-(assert_return (invoke "gt_s" (i32.const -1) (i32.const 1)) (i32.const 0))
-(assert_return (invoke "gt_s" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 0))
-(assert_return (invoke "gt_s" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 0))
-(assert_return (invoke "gt_s" (i32.const -1) (i32.const -1)) (i32.const 0))
-(assert_return (invoke "gt_s" (i32.const 1) (i32.const 0)) (i32.const 1))
-(assert_return (invoke "gt_s" (i32.const 0) (i32.const 1)) (i32.const 0))
-(assert_return (invoke "gt_s" (i32.const 0x80000000) (i32.const 0)) (i32.const 0))
-(assert_return (invoke "gt_s" (i32.const 0) (i32.const 0x80000000)) (i32.const 1))
-(assert_return (invoke "gt_s" (i32.const 0x80000000) (i32.const -1)) (i32.const 0))
-(assert_return (invoke "gt_s" (i32.const -1) (i32.const 0x80000000)) (i32.const 1))
-(assert_return (invoke "gt_s" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 0))
-(assert_return (invoke "gt_s" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 1))
+;; (assert_return (invoke "gt_s" (i32.const 0) (i32.const 0)) (i32.const 0))
+;; (assert_return (invoke "gt_s" (i32.const 1) (i32.const 1)) (i32.const 0))
+;; (assert_return (invoke "gt_s" (i32.const -1) (i32.const 1)) (i32.const 0))
+;; (assert_return (invoke "gt_s" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 0))
+;; (assert_return (invoke "gt_s" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 0))
+;; (assert_return (invoke "gt_s" (i32.const -1) (i32.const -1)) (i32.const 0))
+;; (assert_return (invoke "gt_s" (i32.const 1) (i32.const 0)) (i32.const 1))
+;; (assert_return (invoke "gt_s" (i32.const 0) (i32.const 1)) (i32.const 0))
+;; (assert_return (invoke "gt_s" (i32.const 0x80000000) (i32.const 0)) (i32.const 0))
+;; (assert_return (invoke "gt_s" (i32.const 0) (i32.const 0x80000000)) (i32.const 1))
+;; (assert_return (invoke "gt_s" (i32.const 0x80000000) (i32.const -1)) (i32.const 0))
+;; (assert_return (invoke "gt_s" (i32.const -1) (i32.const 0x80000000)) (i32.const 1))
+;; (assert_return (invoke "gt_s" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 0))
+;; (assert_return (invoke "gt_s" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 1))
-(assert_return (invoke "gt_u" (i32.const 0) (i32.const 0)) (i32.const 0))
-(assert_return (invoke "gt_u" (i32.const 1) (i32.const 1)) (i32.const 0))
-(assert_return (invoke "gt_u" (i32.const -1) (i32.const 1)) (i32.const 1))
-(assert_return (invoke "gt_u" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 0))
-(assert_return (invoke "gt_u" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 0))
-(assert_return (invoke "gt_u" (i32.const -1) (i32.const -1)) (i32.const 0))
-(assert_return (invoke "gt_u" (i32.const 1) (i32.const 0)) (i32.const 1))
-(assert_return (invoke "gt_u" (i32.const 0) (i32.const 1)) (i32.const 0))
-(assert_return (invoke "gt_u" (i32.const 0x80000000) (i32.const 0)) (i32.const 1))
-(assert_return (invoke "gt_u" (i32.const 0) (i32.const 0x80000000)) (i32.const 0))
-(assert_return (invoke "gt_u" (i32.const 0x80000000) (i32.const -1)) (i32.const 0))
-(assert_return (invoke "gt_u" (i32.const -1) (i32.const 0x80000000)) (i32.const 1))
-(assert_return (invoke "gt_u" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 1))
-(assert_return (invoke "gt_u" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 0))
+;; (assert_return (invoke "gt_u" (i32.const 0) (i32.const 0)) (i32.const 0))
+;; (assert_return (invoke "gt_u" (i32.const 1) (i32.const 1)) (i32.const 0))
+;; (assert_return (invoke "gt_u" (i32.const -1) (i32.const 1)) (i32.const 1))
+;; (assert_return (invoke "gt_u" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 0))
+;; (assert_return (invoke "gt_u" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 0))
+;; (assert_return (invoke "gt_u" (i32.const -1) (i32.const -1)) (i32.const 0))
+;; (assert_return (invoke "gt_u" (i32.const 1) (i32.const 0)) (i32.const 1))
+;; (assert_return (invoke "gt_u" (i32.const 0) (i32.const 1)) (i32.const 0))
+;; (assert_return (invoke "gt_u" (i32.const 0x80000000) (i32.const 0)) (i32.const 1))
+;; (assert_return (invoke "gt_u" (i32.const 0) (i32.const 0x80000000)) (i32.const 0))
+;; (assert_return (invoke "gt_u" (i32.const 0x80000000) (i32.const -1)) (i32.const 0))
+;; (assert_return (invoke "gt_u" (i32.const -1) (i32.const 0x80000000)) (i32.const 1))
+;; (assert_return (invoke "gt_u" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 1))
+;; (assert_return (invoke "gt_u" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 0))
-(assert_return (invoke "ge_s" (i32.const 0) (i32.const 0)) (i32.const 1))
-(assert_return (invoke "ge_s" (i32.const 1) (i32.const 1)) (i32.const 1))
-(assert_return (invoke "ge_s" (i32.const -1) (i32.const 1)) (i32.const 0))
-(assert_return (invoke "ge_s" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 1))
-(assert_return (invoke "ge_s" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 1))
-(assert_return (invoke "ge_s" (i32.const -1) (i32.const -1)) (i32.const 1))
-(assert_return (invoke "ge_s" (i32.const 1) (i32.const 0)) (i32.const 1))
-(assert_return (invoke "ge_s" (i32.const 0) (i32.const 1)) (i32.const 0))
-(assert_return (invoke "ge_s" (i32.const 0x80000000) (i32.const 0)) (i32.const 0))
-(assert_return (invoke "ge_s" (i32.const 0) (i32.const 0x80000000)) (i32.const 1))
-(assert_return (invoke "ge_s" (i32.const 0x80000000) (i32.const -1)) (i32.const 0))
-(assert_return (invoke "ge_s" (i32.const -1) (i32.const 0x80000000)) (i32.const 1))
-(assert_return (invoke "ge_s" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 0))
-(assert_return (invoke "ge_s" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 1))
+;; (assert_return (invoke "ge_s" (i32.const 0) (i32.const 0)) (i32.const 1))
+;; (assert_return (invoke "ge_s" (i32.const 1) (i32.const 1)) (i32.const 1))
+;; (assert_return (invoke "ge_s" (i32.const -1) (i32.const 1)) (i32.const 0))
+;; (assert_return (invoke "ge_s" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 1))
+;; (assert_return (invoke "ge_s" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 1))
+;; (assert_return (invoke "ge_s" (i32.const -1) (i32.const -1)) (i32.const 1))
+;; (assert_return (invoke "ge_s" (i32.const 1) (i32.const 0)) (i32.const 1))
+;; (assert_return (invoke "ge_s" (i32.const 0) (i32.const 1)) (i32.const 0))
+;; (assert_return (invoke "ge_s" (i32.const 0x80000000) (i32.const 0)) (i32.const 0))
+;; (assert_return (invoke "ge_s" (i32.const 0) (i32.const 0x80000000)) (i32.const 1))
+;; (assert_return (invoke "ge_s" (i32.const 0x80000000) (i32.const -1)) (i32.const 0))
+;; (assert_return (invoke "ge_s" (i32.const -1) (i32.const 0x80000000)) (i32.const 1))
+;; (assert_return (invoke "ge_s" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 0))
+;; (assert_return (invoke "ge_s" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 1))
-(assert_return (invoke "ge_u" (i32.const 0) (i32.const 0)) (i32.const 1))
-(assert_return (invoke "ge_u" (i32.const 1) (i32.const 1)) (i32.const 1))
-(assert_return (invoke "ge_u" (i32.const -1) (i32.const 1)) (i32.const 1))
-(assert_return (invoke "ge_u" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 1))
-(assert_return (invoke "ge_u" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 1))
-(assert_return (invoke "ge_u" (i32.const -1) (i32.const -1)) (i32.const 1))
-(assert_return (invoke "ge_u" (i32.const 1) (i32.const 0)) (i32.const 1))
-(assert_return (invoke "ge_u" (i32.const 0) (i32.const 1)) (i32.const 0))
-(assert_return (invoke "ge_u" (i32.const 0x80000000) (i32.const 0)) (i32.const 1))
-(assert_return (invoke "ge_u" (i32.const 0) (i32.const 0x80000000)) (i32.const 0))
-(assert_return (invoke "ge_u" (i32.const 0x80000000) (i32.const -1)) (i32.const 0))
-(assert_return (invoke "ge_u" (i32.const -1) (i32.const 0x80000000)) (i32.const 1))
-(assert_return (invoke "ge_u" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 1))
-(assert_return (invoke "ge_u" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 0))
+;; (assert_return (invoke "ge_u" (i32.const 0) (i32.const 0)) (i32.const 1))
+;; (assert_return (invoke "ge_u" (i32.const 1) (i32.const 1)) (i32.const 1))
+;; (assert_return (invoke "ge_u" (i32.const -1) (i32.const 1)) (i32.const 1))
+;; (assert_return (invoke "ge_u" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 1))
+;; (assert_return (invoke "ge_u" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 1))
+;; (assert_return (invoke "ge_u" (i32.const -1) (i32.const -1)) (i32.const 1))
+;; (assert_return (invoke "ge_u" (i32.const 1) (i32.const 0)) (i32.const 1))
+;; (assert_return (invoke "ge_u" (i32.const 0) (i32.const 1)) (i32.const 0))
+;; (assert_return (invoke "ge_u" (i32.const 0x80000000) (i32.const 0)) (i32.const 1))
+;; (assert_return (invoke "ge_u" (i32.const 0) (i32.const 0x80000000)) (i32.const 0))
+;; (assert_return (invoke "ge_u" (i32.const 0x80000000) (i32.const -1)) (i32.const 0))
+;; (assert_return (invoke "ge_u" (i32.const -1) (i32.const 0x80000000)) (i32.const 1))
+;; (assert_return (invoke "ge_u" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 1))
+;; (assert_return (invoke "ge_u" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 0))
-(assert_invalid
- (module
- (func $type-unary-operand-empty
- (i32.eqz) (drop)
- )
- )
- "type mismatch"
-)
-(assert_invalid
- (module
- (func $type-unary-operand-empty-in-block
- (i32.const 0)
- (block (i32.eqz) (drop))
- )
- )
- "type mismatch"
-)
-(assert_invalid
- (module
- (func $type-unary-operand-empty-in-loop
- (i32.const 0)
- (loop (i32.eqz) (drop))
- )
- )
- "type mismatch"
-)
-(assert_invalid
- (module
- (func $type-unary-operand-empty-in-if
- (i32.const 0) (i32.const 0)
- (if (then (i32.eqz) (drop)))
- )
- )
- "type mismatch"
-)
-(assert_invalid
- (module
- (func $type-unary-operand-empty-in-else
- (i32.const 0) (i32.const 0)
- (if (result i32) (then (i32.const 0)) (else (i32.eqz))) (drop)
- )
- )
- "type mismatch"
-)
-(assert_invalid
- (module
- (func $type-unary-operand-empty-in-br
- (i32.const 0)
- (block (br 0 (i32.eqz)) (drop))
- )
- )
- "type mismatch"
-)
-(assert_invalid
- (module
- (func $type-unary-operand-empty-in-br_if
- (i32.const 0)
- (block (br_if 0 (i32.eqz) (i32.const 1)) (drop))
- )
- )
- "type mismatch"
-)
-(assert_invalid
- (module
- (func $type-unary-operand-empty-in-br_table
- (i32.const 0)
- (block (br_table 0 (i32.eqz)) (drop))
- )
- )
- "type mismatch"
-)
-(assert_invalid
- (module
- (func $type-unary-operand-empty-in-return
- (return (i32.eqz)) (drop)
- )
- )
- "type mismatch"
-)
-(assert_invalid
- (module
- (func $type-unary-operand-empty-in-select
- (select (i32.eqz) (i32.const 1) (i32.const 2)) (drop)
- )
- )
- "type mismatch"
-)
-(assert_invalid
- (module
- (func $type-unary-operand-empty-in-call
- (call 1 (i32.eqz)) (drop)
- )
- (func (param i32) (result i32) (local.get 0))
- )
- "type mismatch"
-)
-(assert_invalid
- (module
- (func $f (param i32) (result i32) (local.get 0))
- (type $sig (func (param i32) (result i32)))
- (table funcref (elem $f))
- (func $type-unary-operand-empty-in-call_indirect
- (block (result i32)
- (call_indirect (type $sig)
- (i32.eqz) (i32.const 0)
- )
- (drop)
- )
- )
- )
- "type mismatch"
-)
-(assert_invalid
- (module
- (func $type-unary-operand-empty-in-local.set
- (local i32)
- (local.set 0 (i32.eqz)) (local.get 0) (drop)
- )
- )
- "type mismatch"
-)
-(assert_invalid
- (module
- (func $type-unary-operand-empty-in-local.tee
- (local i32)
- (local.tee 0 (i32.eqz)) (drop)
- )
- )
- "type mismatch"
-)
-(assert_invalid
- (module
- (global $x (mut i32) (i32.const 0))
- (func $type-unary-operand-empty-in-global.set
- (global.set $x (i32.eqz)) (global.get $x) (drop)
- )
- )
- "type mismatch"
-)
-(assert_invalid
- (module
- (memory 0)
- (func $type-unary-operand-empty-in-memory.grow
- (memory.grow (i32.eqz)) (drop)
- )
- )
- "type mismatch"
-)
-(assert_invalid
- (module
- (memory 0)
- (func $type-unary-operand-empty-in-load
- (i32.load (i32.eqz)) (drop)
- )
- )
- "type mismatch"
-)
-(assert_invalid
- (module
- (memory 1)
- (func $type-unary-operand-empty-in-store
- (i32.store (i32.eqz) (i32.const 1))
- )
- )
- "type mismatch"
-)
+;; (assert_invalid
+;; (module
+;; (func $type-unary-operand-empty
+;; (i32.eqz) (drop)
+;; )
+;; )
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module
+;; (func $type-unary-operand-empty-in-block
+;; (i32.const 0)
+;; (block (i32.eqz) (drop))
+;; )
+;; )
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module
+;; (func $type-unary-operand-empty-in-loop
+;; (i32.const 0)
+;; (loop (i32.eqz) (drop))
+;; )
+;; )
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module
+;; (func $type-unary-operand-empty-in-if
+;; (i32.const 0) (i32.const 0)
+;; (if (then (i32.eqz) (drop)))
+;; )
+;; )
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module
+;; (func $type-unary-operand-empty-in-else
+;; (i32.const 0) (i32.const 0)
+;; (if (result i32) (then (i32.const 0)) (else (i32.eqz))) (drop)
+;; )
+;; )
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module
+;; (func $type-unary-operand-empty-in-br
+;; (i32.const 0)
+;; (block (br 0 (i32.eqz)) (drop))
+;; )
+;; )
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module
+;; (func $type-unary-operand-empty-in-br_if
+;; (i32.const 0)
+;; (block (br_if 0 (i32.eqz) (i32.const 1)) (drop))
+;; )
+;; )
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module
+;; (func $type-unary-operand-empty-in-br_table
+;; (i32.const 0)
+;; (block (br_table 0 (i32.eqz)) (drop))
+;; )
+;; )
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module
+;; (func $type-unary-operand-empty-in-return
+;; (return (i32.eqz)) (drop)
+;; )
+;; )
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module
+;; (func $type-unary-operand-empty-in-select
+;; (select (i32.eqz) (i32.const 1) (i32.const 2)) (drop)
+;; )
+;; )
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module
+;; (func $type-unary-operand-empty-in-call
+;; (call 1 (i32.eqz)) (drop)
+;; )
+;; (func (param i32) (result i32) (local.get 0))
+;; )
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module
+;; (func $f (param i32) (result i32) (local.get 0))
+;; (type $sig (func (param i32) (result i32)))
+;; (table funcref (elem $f))
+;; (func $type-unary-operand-empty-in-call_indirect
+;; (block (result i32)
+;; (call_indirect (type $sig)
+;; (i32.eqz) (i32.const 0)
+;; )
+;; (drop)
+;; )
+;; )
+;; )
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module
+;; (func $type-unary-operand-empty-in-local.set
+;; (local i32)
+;; (local.set 0 (i32.eqz)) (local.get 0) (drop)
+;; )
+;; )
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module
+;; (func $type-unary-operand-empty-in-local.tee
+;; (local i32)
+;; (local.tee 0 (i32.eqz)) (drop)
+;; )
+;; )
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module
+;; (global $x (mut i32) (i32.const 0))
+;; (func $type-unary-operand-empty-in-global.set
+;; (global.set $x (i32.eqz)) (global.get $x) (drop)
+;; )
+;; )
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module
+;; (memory 0)
+;; (func $type-unary-operand-empty-in-memory.grow
+;; (memory.grow (i32.eqz)) (drop)
+;; )
+;; )
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module
+;; (memory 0)
+;; (func $type-unary-operand-empty-in-load
+;; (i32.load (i32.eqz)) (drop)
+;; )
+;; )
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module
+;; (memory 1)
+;; (func $type-unary-operand-empty-in-store
+;; (i32.store (i32.eqz) (i32.const 1))
+;; )
+;; )
+;; "type mismatch"
+;; )
-(assert_invalid
- (module
- (func $type-binary-1st-operand-empty
- (i32.add) (drop)
- )
- )
- "type mismatch"
-)
-(assert_invalid
- (module
- (func $type-binary-2nd-operand-empty
- (i32.const 0) (i32.add) (drop)
- )
- )
- "type mismatch"
-)
-(assert_invalid
- (module
- (func $type-binary-1st-operand-empty-in-block
- (i32.const 0) (i32.const 0)
- (block (i32.add) (drop))
- )
- )
- "type mismatch"
-)
-(assert_invalid
- (module
- (func $type-binary-2nd-operand-empty-in-block
- (i32.const 0)
- (block (i32.const 0) (i32.add) (drop))
- )
- )
- "type mismatch"
-)
-(assert_invalid
- (module
- (func $type-binary-1st-operand-empty-in-loop
- (i32.const 0) (i32.const 0)
- (loop (i32.add) (drop))
- )
- )
- "type mismatch"
-)
-(assert_invalid
- (module
- (func $type-binary-2nd-operand-empty-in-loop
- (i32.const 0)
- (loop (i32.const 0) (i32.add) (drop))
- )
- )
- "type mismatch"
-)
-(assert_invalid
- (module
- (func $type-binary-1st-operand-empty-in-if
- (i32.const 0) (i32.const 0) (i32.const 0)
- (if (i32.add) (then (drop)))
- )
- )
- "type mismatch"
-)
-(assert_invalid
- (module
- (func $type-binary-2nd-operand-empty-in-if
- (i32.const 0) (i32.const 0)
- (if (i32.const 0) (then (i32.add)) (else (drop)))
- )
- )
- "type mismatch"
-)
-(assert_invalid
- (module
- (func $type-binary-1st-operand-empty-in-else
- (i32.const 0) (i32.const 0) (i32.const 0)
- (if (result i32) (then (i32.const 0)) (else (i32.add) (i32.const 0)))
- (drop) (drop)
- )
- )
- "type mismatch"
-)
-(assert_invalid
- (module
- (func $type-binary-2nd-operand-empty-in-else
- (i32.const 0) (i32.const 0)
- (if (result i32) (then (i32.const 0)) (else (i32.add)))
- (drop)
- )
- )
- "type mismatch"
-)
-(assert_invalid
- (module
- (func $type-binary-1st-operand-empty-in-br
- (i32.const 0) (i32.const 0)
- (block (br 0 (i32.add)) (drop))
- )
- )
- "type mismatch"
-)
-(assert_invalid
- (module
- (func $type-binary-2nd-operand-empty-in-br
- (i32.const 0)
- (block (br 0 (i32.const 0) (i32.add)) (drop))
- )
- )
- "type mismatch"
-)
-(assert_invalid
- (module
- (func $type-binary-1st-operand-empty-in-br_if
- (i32.const 0) (i32.const 0)
- (block (br_if 0 (i32.add) (i32.const 1)) (drop))
- )
- )
- "type mismatch"
-)
-(assert_invalid
- (module
- (func $type-binary-2nd-operand-empty-in-br_if
- (i32.const 0)
- (block (br_if 0 (i32.const 0) (i32.add) (i32.const 1)) (drop))
- )
- )
- "type mismatch"
-)
-(assert_invalid
- (module
- (func $type-binary-1st-operand-empty-in-br_table
- (i32.const 0) (i32.const 0)
- (block (br_table 0 (i32.add)) (drop))
- )
- )
- "type mismatch"
-)
-(assert_invalid
- (module
- (func $type-binary-2nd-operand-empty-in-br_table
- (i32.const 0)
- (block (br_table 0 (i32.const 0) (i32.add)) (drop))
- )
- )
- "type mismatch"
-)
-(assert_invalid
- (module
- (func $type-binary-1st-operand-empty-in-return
- (return (i32.add)) (drop)
- )
- )
- "type mismatch"
-)
-(assert_invalid
- (module
- (func $type-binary-2nd-operand-empty-in-return
- (return (i32.const 0) (i32.add)) (drop)
- )
- )
- "type mismatch"
-)
-(assert_invalid
- (module
- (func $type-binary-1st-operand-empty-in-select
- (select (i32.add) (i32.const 1) (i32.const 2)) (drop)
- )
- )
- "type mismatch"
-)
-(assert_invalid
- (module
- (func $type-binary-2nd-operand-empty-in-select
- (select (i32.const 0) (i32.add) (i32.const 1) (i32.const 2)) (drop)
- )
- )
- "type mismatch"
-)
-(assert_invalid
- (module
- (func $type-binary-1st-operand-empty-in-call
- (call 1 (i32.add)) (drop)
- )
- (func (param i32 i32) (result i32) (local.get 0))
- )
- "type mismatch"
-)
-(assert_invalid
- (module
- (func $type-binary-2nd-operand-empty-in-call
- (call 1 (i32.const 0) (i32.add)) (drop)
- )
- (func (param i32 i32) (result i32) (local.get 0))
- )
- "type mismatch"
-)
-(assert_invalid
- (module
- (func $f (param i32) (result i32) (local.get 0))
- (type $sig (func (param i32) (result i32)))
- (table funcref (elem $f))
- (func $type-binary-1st-operand-empty-in-call_indirect
- (block (result i32)
- (call_indirect (type $sig)
- (i32.add) (i32.const 0)
- )
- (drop)
- )
- )
- )
- "type mismatch"
-)
-(assert_invalid
- (module
- (func $f (param i32) (result i32) (local.get 0))
- (type $sig (func (param i32) (result i32)))
- (table funcref (elem $f))
- (func $type-binary-2nd-operand-empty-in-call_indirect
- (block (result i32)
- (call_indirect (type $sig)
- (i32.const 0) (i32.add) (i32.const 0)
- )
- (drop)
- )
- )
- )
- "type mismatch"
-)
-(assert_invalid
- (module
- (func $type-binary-1st-operand-empty-in-local.set
- (local i32)
- (local.set 0 (i32.add)) (local.get 0) (drop)
- )
- )
- "type mismatch"
-)
-(assert_invalid
- (module
- (func $type-binary-2nd-operand-empty-in-local.set
- (local i32)
- (local.set 0 (i32.const 0) (i32.add)) (local.get 0) (drop)
- )
- )
- "type mismatch"
-)
-(assert_invalid
- (module
- (func $type-binary-1st-operand-empty-in-local.tee
- (local i32)
- (local.tee 0 (i32.add)) (drop)
- )
- )
- "type mismatch"
-)
-(assert_invalid
- (module
- (func $type-binary-2nd-operand-empty-in-local.tee
- (local i32)
- (local.tee 0 (i32.const 0) (i32.add)) (drop)
- )
- )
- "type mismatch"
-)
-(assert_invalid
- (module
- (global $x (mut i32) (i32.const 0))
- (func $type-binary-1st-operand-empty-in-global.set
- (global.set $x (i32.add)) (global.get $x) (drop)
- )
- )
- "type mismatch"
-)
-(assert_invalid
- (module
- (global $x (mut i32) (i32.const 0))
- (func $type-binary-2nd-operand-empty-in-global.set
- (global.set $x (i32.const 0) (i32.add)) (global.get $x) (drop)
- )
- )
- "type mismatch"
-)
-(assert_invalid
- (module
- (memory 0)
- (func $type-binary-1st-operand-empty-in-memory.grow
- (memory.grow (i32.add)) (drop)
- )
- )
- "type mismatch"
-)
-(assert_invalid
- (module
- (memory 0)
- (func $type-binary-2nd-operand-empty-in-memory.grow
- (memory.grow (i32.const 0) (i32.add)) (drop)
- )
- )
- "type mismatch"
-)
-(assert_invalid
- (module
- (memory 0)
- (func $type-binary-1st-operand-empty-in-load
- (i32.load (i32.add)) (drop)
- )
- )
- "type mismatch"
-)
-(assert_invalid
- (module
- (memory 0)
- (func $type-binary-2nd-operand-empty-in-load
- (i32.load (i32.const 0) (i32.add)) (drop)
- )
- )
- "type mismatch"
-)
-(assert_invalid
- (module
- (memory 1)
- (func $type-binary-1st-operand-empty-in-store
- (i32.store (i32.add) (i32.const 1))
- )
- )
- "type mismatch"
-)
-(assert_invalid
- (module
- (memory 1)
- (func $type-binary-2nd-operand-empty-in-store
- (i32.store (i32.const 1) (i32.add) (i32.const 0))
- )
- )
- "type mismatch"
-)
+;; (assert_invalid
+;; (module
+;; (func $type-binary-1st-operand-empty
+;; (i32.add) (drop)
+;; )
+;; )
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module
+;; (func $type-binary-2nd-operand-empty
+;; (i32.const 0) (i32.add) (drop)
+;; )
+;; )
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module
+;; (func $type-binary-1st-operand-empty-in-block
+;; (i32.const 0) (i32.const 0)
+;; (block (i32.add) (drop))
+;; )
+;; )
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module
+;; (func $type-binary-2nd-operand-empty-in-block
+;; (i32.const 0)
+;; (block (i32.const 0) (i32.add) (drop))
+;; )
+;; )
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module
+;; (func $type-binary-1st-operand-empty-in-loop
+;; (i32.const 0) (i32.const 0)
+;; (loop (i32.add) (drop))
+;; )
+;; )
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module
+;; (func $type-binary-2nd-operand-empty-in-loop
+;; (i32.const 0)
+;; (loop (i32.const 0) (i32.add) (drop))
+;; )
+;; )
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module
+;; (func $type-binary-1st-operand-empty-in-if
+;; (i32.const 0) (i32.const 0) (i32.const 0)
+;; (if (i32.add) (then (drop)))
+;; )
+;; )
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module
+;; (func $type-binary-2nd-operand-empty-in-if
+;; (i32.const 0) (i32.const 0)
+;; (if (i32.const 0) (then (i32.add)) (else (drop)))
+;; )
+;; )
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module
+;; (func $type-binary-1st-operand-empty-in-else
+;; (i32.const 0) (i32.const 0) (i32.const 0)
+;; (if (result i32) (then (i32.const 0)) (else (i32.add) (i32.const 0)))
+;; (drop) (drop)
+;; )
+;; )
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module
+;; (func $type-binary-2nd-operand-empty-in-else
+;; (i32.const 0) (i32.const 0)
+;; (if (result i32) (then (i32.const 0)) (else (i32.add)))
+;; (drop)
+;; )
+;; )
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module
+;; (func $type-binary-1st-operand-empty-in-br
+;; (i32.const 0) (i32.const 0)
+;; (block (br 0 (i32.add)) (drop))
+;; )
+;; )
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module
+;; (func $type-binary-2nd-operand-empty-in-br
+;; (i32.const 0)
+;; (block (br 0 (i32.const 0) (i32.add)) (drop))
+;; )
+;; )
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module
+;; (func $type-binary-1st-operand-empty-in-br_if
+;; (i32.const 0) (i32.const 0)
+;; (block (br_if 0 (i32.add) (i32.const 1)) (drop))
+;; )
+;; )
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module
+;; (func $type-binary-2nd-operand-empty-in-br_if
+;; (i32.const 0)
+;; (block (br_if 0 (i32.const 0) (i32.add) (i32.const 1)) (drop))
+;; )
+;; )
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module
+;; (func $type-binary-1st-operand-empty-in-br_table
+;; (i32.const 0) (i32.const 0)
+;; (block (br_table 0 (i32.add)) (drop))
+;; )
+;; )
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module
+;; (func $type-binary-2nd-operand-empty-in-br_table
+;; (i32.const 0)
+;; (block (br_table 0 (i32.const 0) (i32.add)) (drop))
+;; )
+;; )
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module
+;; (func $type-binary-1st-operand-empty-in-return
+;; (return (i32.add)) (drop)
+;; )
+;; )
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module
+;; (func $type-binary-2nd-operand-empty-in-return
+;; (return (i32.const 0) (i32.add)) (drop)
+;; )
+;; )
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module
+;; (func $type-binary-1st-operand-empty-in-select
+;; (select (i32.add) (i32.const 1) (i32.const 2)) (drop)
+;; )
+;; )
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module
+;; (func $type-binary-2nd-operand-empty-in-select
+;; (select (i32.const 0) (i32.add) (i32.const 1) (i32.const 2)) (drop)
+;; )
+;; )
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module
+;; (func $type-binary-1st-operand-empty-in-call
+;; (call 1 (i32.add)) (drop)
+;; )
+;; (func (param i32 i32) (result i32) (local.get 0))
+;; )
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module
+;; (func $type-binary-2nd-operand-empty-in-call
+;; (call 1 (i32.const 0) (i32.add)) (drop)
+;; )
+;; (func (param i32 i32) (result i32) (local.get 0))
+;; )
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module
+;; (func $f (param i32) (result i32) (local.get 0))
+;; (type $sig (func (param i32) (result i32)))
+;; (table funcref (elem $f))
+;; (func $type-binary-1st-operand-empty-in-call_indirect
+;; (block (result i32)
+;; (call_indirect (type $sig)
+;; (i32.add) (i32.const 0)
+;; )
+;; (drop)
+;; )
+;; )
+;; )
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module
+;; (func $f (param i32) (result i32) (local.get 0))
+;; (type $sig (func (param i32) (result i32)))
+;; (table funcref (elem $f))
+;; (func $type-binary-2nd-operand-empty-in-call_indirect
+;; (block (result i32)
+;; (call_indirect (type $sig)
+;; (i32.const 0) (i32.add) (i32.const 0)
+;; )
+;; (drop)
+;; )
+;; )
+;; )
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module
+;; (func $type-binary-1st-operand-empty-in-local.set
+;; (local i32)
+;; (local.set 0 (i32.add)) (local.get 0) (drop)
+;; )
+;; )
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module
+;; (func $type-binary-2nd-operand-empty-in-local.set
+;; (local i32)
+;; (local.set 0 (i32.const 0) (i32.add)) (local.get 0) (drop)
+;; )
+;; )
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module
+;; (func $type-binary-1st-operand-empty-in-local.tee
+;; (local i32)
+;; (local.tee 0 (i32.add)) (drop)
+;; )
+;; )
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module
+;; (func $type-binary-2nd-operand-empty-in-local.tee
+;; (local i32)
+;; (local.tee 0 (i32.const 0) (i32.add)) (drop)
+;; )
+;; )
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module
+;; (global $x (mut i32) (i32.const 0))
+;; (func $type-binary-1st-operand-empty-in-global.set
+;; (global.set $x (i32.add)) (global.get $x) (drop)
+;; )
+;; )
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module
+;; (global $x (mut i32) (i32.const 0))
+;; (func $type-binary-2nd-operand-empty-in-global.set
+;; (global.set $x (i32.const 0) (i32.add)) (global.get $x) (drop)
+;; )
+;; )
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module
+;; (memory 0)
+;; (func $type-binary-1st-operand-empty-in-memory.grow
+;; (memory.grow (i32.add)) (drop)
+;; )
+;; )
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module
+;; (memory 0)
+;; (func $type-binary-2nd-operand-empty-in-memory.grow
+;; (memory.grow (i32.const 0) (i32.add)) (drop)
+;; )
+;; )
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module
+;; (memory 0)
+;; (func $type-binary-1st-operand-empty-in-load
+;; (i32.load (i32.add)) (drop)
+;; )
+;; )
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module
+;; (memory 0)
+;; (func $type-binary-2nd-operand-empty-in-load
+;; (i32.load (i32.const 0) (i32.add)) (drop)
+;; )
+;; )
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module
+;; (memory 1)
+;; (func $type-binary-1st-operand-empty-in-store
+;; (i32.store (i32.add) (i32.const 1))
+;; )
+;; )
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module
+;; (memory 1)
+;; (func $type-binary-2nd-operand-empty-in-store
+;; (i32.store (i32.const 1) (i32.add) (i32.const 0))
+;; )
+;; )
+;; "type mismatch"
+;; )
-;; Type check
+;; ;; Type check
-(assert_invalid (module (func (result i32) (i32.add (i64.const 0) (f32.const 0)))) "type mismatch")
-(assert_invalid (module (func (result i32) (i32.and (i64.const 0) (f32.const 0)))) "type mismatch")
-(assert_invalid (module (func (result i32) (i32.div_s (i64.const 0) (f32.const 0)))) "type mismatch")
-(assert_invalid (module (func (result i32) (i32.div_u (i64.const 0) (f32.const 0)))) "type mismatch")
-(assert_invalid (module (func (result i32) (i32.mul (i64.const 0) (f32.const 0)))) "type mismatch")
-(assert_invalid (module (func (result i32) (i32.or (i64.const 0) (f32.const 0)))) "type mismatch")
-(assert_invalid (module (func (result i32) (i32.rem_s (i64.const 0) (f32.const 0)))) "type mismatch")
-(assert_invalid (module (func (result i32) (i32.rem_u (i64.const 0) (f32.const 0)))) "type mismatch")
-(assert_invalid (module (func (result i32) (i32.rotl (i64.const 0) (f32.const 0)))) "type mismatch")
-(assert_invalid (module (func (result i32) (i32.rotr (i64.const 0) (f32.const 0)))) "type mismatch")
-(assert_invalid (module (func (result i32) (i32.shl (i64.const 0) (f32.const 0)))) "type mismatch")
-(assert_invalid (module (func (result i32) (i32.shr_s (i64.const 0) (f32.const 0)))) "type mismatch")
-(assert_invalid (module (func (result i32) (i32.shr_u (i64.const 0) (f32.const 0)))) "type mismatch")
-(assert_invalid (module (func (result i32) (i32.sub (i64.const 0) (f32.const 0)))) "type mismatch")
-(assert_invalid (module (func (result i32) (i32.xor (i64.const 0) (f32.const 0)))) "type mismatch")
-(assert_invalid (module (func (result i32) (i32.eqz (i64.const 0)))) "type mismatch")
-(assert_invalid (module (func (result i32) (i32.clz (i64.const 0)))) "type mismatch")
-(assert_invalid (module (func (result i32) (i32.ctz (i64.const 0)))) "type mismatch")
-(assert_invalid (module (func (result i32) (i32.popcnt (i64.const 0)))) "type mismatch")
-(assert_invalid (module (func (result i32) (i32.eq (i64.const 0) (f32.const 0)))) "type mismatch")
-(assert_invalid (module (func (result i32) (i32.ge_s (i64.const 0) (f32.const 0)))) "type mismatch")
-(assert_invalid (module (func (result i32) (i32.ge_u (i64.const 0) (f32.const 0)))) "type mismatch")
-(assert_invalid (module (func (result i32) (i32.gt_s (i64.const 0) (f32.const 0)))) "type mismatch")
-(assert_invalid (module (func (result i32) (i32.gt_u (i64.const 0) (f32.const 0)))) "type mismatch")
-(assert_invalid (module (func (result i32) (i32.le_s (i64.const 0) (f32.const 0)))) "type mismatch")
-(assert_invalid (module (func (result i32) (i32.le_u (i64.const 0) (f32.const 0)))) "type mismatch")
-(assert_invalid (module (func (result i32) (i32.lt_s (i64.const 0) (f32.const 0)))) "type mismatch")
-(assert_invalid (module (func (result i32) (i32.lt_u (i64.const 0) (f32.const 0)))) "type mismatch")
-(assert_invalid (module (func (result i32) (i32.ne (i64.const 0) (f32.const 0)))) "type mismatch")
+;; (assert_invalid (module (func (result i32) (i32.add (i64.const 0) (f32.const 0)))) "type mismatch")
+;; (assert_invalid (module (func (result i32) (i32.and (i64.const 0) (f32.const 0)))) "type mismatch")
+;; (assert_invalid (module (func (result i32) (i32.div_s (i64.const 0) (f32.const 0)))) "type mismatch")
+;; (assert_invalid (module (func (result i32) (i32.div_u (i64.const 0) (f32.const 0)))) "type mismatch")
+;; (assert_invalid (module (func (result i32) (i32.mul (i64.const 0) (f32.const 0)))) "type mismatch")
+;; (assert_invalid (module (func (result i32) (i32.or (i64.const 0) (f32.const 0)))) "type mismatch")
+;; (assert_invalid (module (func (result i32) (i32.rem_s (i64.const 0) (f32.const 0)))) "type mismatch")
+;; (assert_invalid (module (func (result i32) (i32.rem_u (i64.const 0) (f32.const 0)))) "type mismatch")
+;; (assert_invalid (module (func (result i32) (i32.rotl (i64.const 0) (f32.const 0)))) "type mismatch")
+;; (assert_invalid (module (func (result i32) (i32.rotr (i64.const 0) (f32.const 0)))) "type mismatch")
+;; (assert_invalid (module (func (result i32) (i32.shl (i64.const 0) (f32.const 0)))) "type mismatch")
+;; (assert_invalid (module (func (result i32) (i32.shr_s (i64.const 0) (f32.const 0)))) "type mismatch")
+;; (assert_invalid (module (func (result i32) (i32.shr_u (i64.const 0) (f32.const 0)))) "type mismatch")
+;; (assert_invalid (module (func (result i32) (i32.sub (i64.const 0) (f32.const 0)))) "type mismatch")
+;; (assert_invalid (module (func (result i32) (i32.xor (i64.const 0) (f32.const 0)))) "type mismatch")
+;; (assert_invalid (module (func (result i32) (i32.eqz (i64.const 0)))) "type mismatch")
+;; (assert_invalid (module (func (result i32) (i32.clz (i64.const 0)))) "type mismatch")
+;; (assert_invalid (module (func (result i32) (i32.ctz (i64.const 0)))) "type mismatch")
+;; (assert_invalid (module (func (result i32) (i32.popcnt (i64.const 0)))) "type mismatch")
+;; (assert_invalid (module (func (result i32) (i32.eq (i64.const 0) (f32.const 0)))) "type mismatch")
+;; (assert_invalid (module (func (result i32) (i32.ge_s (i64.const 0) (f32.const 0)))) "type mismatch")
+;; (assert_invalid (module (func (result i32) (i32.ge_u (i64.const 0) (f32.const 0)))) "type mismatch")
+;; (assert_invalid (module (func (result i32) (i32.gt_s (i64.const 0) (f32.const 0)))) "type mismatch")
+;; (assert_invalid (module (func (result i32) (i32.gt_u (i64.const 0) (f32.const 0)))) "type mismatch")
+;; (assert_invalid (module (func (result i32) (i32.le_s (i64.const 0) (f32.const 0)))) "type mismatch")
+;; (assert_invalid (module (func (result i32) (i32.le_u (i64.const 0) (f32.const 0)))) "type mismatch")
+;; (assert_invalid (module (func (result i32) (i32.lt_s (i64.const 0) (f32.const 0)))) "type mismatch")
+;; (assert_invalid (module (func (result i32) (i32.lt_u (i64.const 0) (f32.const 0)))) "type mismatch")
+;; (assert_invalid (module (func (result i32) (i32.ne (i64.const 0) (f32.const 0)))) "type mismatch")
-(assert_malformed
- (module quote "(func (result i32) (i32.const nan:arithmetic))")
- "unexpected token"
-)
-(assert_malformed
- (module quote "(func (result i32) (i32.const nan:canonical))")
- "unexpected token"
-)
+;; (assert_malformed
+;; (module quote "(func (result i32) (i32.const nan:arithmetic))")
+;; "unexpected token"
+;; )
+;; (assert_malformed
+;; (module quote "(func (result i32) (i32.const nan:canonical))")
+;; "unexpected token"
+;; )
diff --git a/examples/wast/select.wast b/examples/wast/select.wast
new file mode 100644
index 0000000..8148102
--- /dev/null
+++ b/examples/wast/select.wast
@@ -0,0 +1,531 @@
+(module
+ ;; Auxiliary
+ (func $dummy)
+ (table $tab funcref (elem $dummy))
+ (memory 1)
+
+ (func (export "select-i32") (param i32 i32 i32) (result i32)
+ (select (local.get 0) (local.get 1) (local.get 2))
+ )
+ (func (export "select-i64") (param i64 i64 i32) (result i64)
+ (select (local.get 0) (local.get 1) (local.get 2))
+ )
+ (func (export "select-f32") (param f32 f32 i32) (result f32)
+ (select (local.get 0) (local.get 1) (local.get 2))
+ )
+ (func (export "select-f64") (param f64 f64 i32) (result f64)
+ (select (local.get 0) (local.get 1) (local.get 2))
+ )
+
+ (func (export "select-i32-t") (param i32 i32 i32) (result i32)
+ (select (result i32) (local.get 0) (local.get 1) (local.get 2))
+ )
+ (func (export "select-i64-t") (param i64 i64 i32) (result i64)
+ (select (result i64) (local.get 0) (local.get 1) (local.get 2))
+ )
+ (func (export "select-f32-t") (param f32 f32 i32) (result f32)
+ (select (result f32) (local.get 0) (local.get 1) (local.get 2))
+ )
+ (func (export "select-f64-t") (param f64 f64 i32) (result f64)
+ (select (result f64) (local.get 0) (local.get 1) (local.get 2))
+ )
+ (func (export "select-funcref") (param funcref funcref i32) (result funcref)
+ (select (result funcref) (local.get 0) (local.get 1) (local.get 2))
+ )
+ (func (export "select-externref") (param externref externref i32) (result externref)
+ (select (result externref) (local.get 0) (local.get 1) (local.get 2))
+ )
+
+ ;; As the argument of control constructs and instructions
+
+ (func (export "as-select-first") (param i32) (result i32)
+ (select (select (i32.const 0) (i32.const 1) (local.get 0)) (i32.const 2) (i32.const 3))
+ )
+ (func (export "as-select-mid") (param i32) (result i32)
+ (select (i32.const 2) (select (i32.const 0) (i32.const 1) (local.get 0)) (i32.const 3))
+ )
+ (func (export "as-select-last") (param i32) (result i32)
+ (select (i32.const 2) (i32.const 3) (select (i32.const 0) (i32.const 1) (local.get 0)))
+ )
+
+ (func (export "as-loop-first") (param i32) (result i32)
+ (loop (result i32) (select (i32.const 2) (i32.const 3) (local.get 0)) (call $dummy) (call $dummy))
+ )
+ (func (export "as-loop-mid") (param i32) (result i32)
+ (loop (result i32) (call $dummy) (select (i32.const 2) (i32.const 3) (local.get 0)) (call $dummy))
+ )
+ (func (export "as-loop-last") (param i32) (result i32)
+ (loop (result i32) (call $dummy) (call $dummy) (select (i32.const 2) (i32.const 3) (local.get 0)))
+ )
+
+ (func (export "as-if-condition") (param i32)
+ (select (i32.const 2) (i32.const 3) (local.get 0)) (if (then (call $dummy)))
+ )
+ (func (export "as-if-then") (param i32) (result i32)
+ (if (result i32) (i32.const 1) (then (select (i32.const 2) (i32.const 3) (local.get 0))) (else (i32.const 4)))
+ )
+ (func (export "as-if-else") (param i32) (result i32)
+ (if (result i32) (i32.const 0) (then (i32.const 2)) (else (select (i32.const 2) (i32.const 3) (local.get 0))))
+ )
+
+ (func (export "as-br_if-first") (param i32) (result i32)
+ (block (result i32) (br_if 0 (select (i32.const 2) (i32.const 3) (local.get 0)) (i32.const 4)))
+ )
+ (func (export "as-br_if-last") (param i32) (result i32)
+ (block (result i32) (br_if 0 (i32.const 2) (select (i32.const 2) (i32.const 3) (local.get 0))))
+ )
+
+ (func (export "as-br_table-first") (param i32) (result i32)
+ (block (result i32) (select (i32.const 2) (i32.const 3) (local.get 0)) (i32.const 2) (br_table 0 0))
+ )
+ (func (export "as-br_table-last") (param i32) (result i32)
+ (block (result i32) (i32.const 2) (select (i32.const 2) (i32.const 3) (local.get 0)) (br_table 0 0))
+ )
+
+ (func $func (param i32 i32) (result i32) (local.get 0))
+ (type $check (func (param i32 i32) (result i32)))
+ (table $t funcref (elem $func))
+ (func (export "as-call_indirect-first") (param i32) (result i32)
+ (block (result i32)
+ (call_indirect $t (type $check)
+ (select (i32.const 2) (i32.const 3) (local.get 0)) (i32.const 1) (i32.const 0)
+ )
+ )
+ )
+ (func (export "as-call_indirect-mid") (param i32) (result i32)
+ (block (result i32)
+ (call_indirect $t (type $check)
+ (i32.const 1) (select (i32.const 2) (i32.const 3) (local.get 0)) (i32.const 0)
+ )
+ )
+ )
+ (func (export "as-call_indirect-last") (param i32) (result i32)
+ (block (result i32)
+ (call_indirect $t (type $check)
+ (i32.const 1) (i32.const 4) (select (i32.const 2) (i32.const 3) (local.get 0))
+ )
+ )
+ )
+
+ (func (export "as-store-first") (param i32)
+ (select (i32.const 0) (i32.const 4) (local.get 0)) (i32.const 1) (i32.store)
+ )
+ (func (export "as-store-last") (param i32)
+ (i32.const 8) (select (i32.const 1) (i32.const 2) (local.get 0)) (i32.store)
+ )
+
+ (func (export "as-memory.grow-value") (param i32) (result i32)
+ (memory.grow (select (i32.const 1) (i32.const 2) (local.get 0)))
+ )
+
+ (func $f (param i32) (result i32) (local.get 0))
+
+ (func (export "as-call-value") (param i32) (result i32)
+ (call $f (select (i32.const 1) (i32.const 2) (local.get 0)))
+ )
+ (func (export "as-return-value") (param i32) (result i32)
+ (select (i32.const 1) (i32.const 2) (local.get 0)) (return)
+ )
+ (func (export "as-drop-operand") (param i32)
+ (drop (select (i32.const 1) (i32.const 2) (local.get 0)))
+ )
+ (func (export "as-br-value") (param i32) (result i32)
+ (block (result i32) (br 0 (select (i32.const 1) (i32.const 2) (local.get 0))))
+ )
+ (func (export "as-local.set-value") (param i32) (result i32)
+ (local i32) (local.set 0 (select (i32.const 1) (i32.const 2) (local.get 0))) (local.get 0)
+ )
+ (func (export "as-local.tee-value") (param i32) (result i32)
+ (local.tee 0 (select (i32.const 1) (i32.const 2) (local.get 0)))
+ )
+ (global $a (mut i32) (i32.const 10))
+ (func (export "as-global.set-value") (param i32) (result i32)
+ (global.set $a (select (i32.const 1) (i32.const 2) (local.get 0)))
+ (global.get $a)
+ )
+ (func (export "as-load-operand") (param i32) (result i32)
+ (i32.load (select (i32.const 0) (i32.const 4) (local.get 0)))
+ )
+
+ (func (export "as-unary-operand") (param i32) (result i32)
+ (i32.eqz (select (i32.const 0) (i32.const 1) (local.get 0)))
+ )
+ (func (export "as-binary-operand") (param i32) (result i32)
+ (i32.mul
+ (select (i32.const 1) (i32.const 2) (local.get 0))
+ (select (i32.const 1) (i32.const 2) (local.get 0))
+ )
+ )
+ (func (export "as-test-operand") (param i32) (result i32)
+ (block (result i32)
+ (i32.eqz (select (i32.const 0) (i32.const 1) (local.get 0)))
+ )
+ )
+
+ (func (export "as-compare-left") (param i32) (result i32)
+ (block (result i32)
+ (i32.le_s (select (i32.const 1) (i32.const 2) (local.get 0)) (i32.const 1))
+ )
+ )
+ (func (export "as-compare-right") (param i32) (result i32)
+ (block (result i32)
+ (i32.ne (i32.const 1) (select (i32.const 0) (i32.const 1) (local.get 0)))
+ )
+ )
+
+ (func (export "as-convert-operand") (param i32) (result i32)
+ (block (result i32)
+ (i32.wrap_i64 (select (i64.const 1) (i64.const 0) (local.get 0)))
+ )
+ )
+)
+
+(assert_return (invoke "select-i32" (i32.const 1) (i32.const 2) (i32.const 1)) (i32.const 1))
+(assert_return (invoke "select-i64" (i64.const 2) (i64.const 1) (i32.const 1)) (i64.const 2))
+(assert_return (invoke "select-f32" (f32.const 1) (f32.const 2) (i32.const 1)) (f32.const 1))
+(assert_return (invoke "select-f64" (f64.const 1) (f64.const 2) (i32.const 1)) (f64.const 1))
+
+(assert_return (invoke "select-i32" (i32.const 1) (i32.const 2) (i32.const 0)) (i32.const 2))
+(assert_return (invoke "select-i32" (i32.const 2) (i32.const 1) (i32.const 0)) (i32.const 1))
+(assert_return (invoke "select-i64" (i64.const 2) (i64.const 1) (i32.const -1)) (i64.const 2))
+(assert_return (invoke "select-i64" (i64.const 2) (i64.const 1) (i32.const 0xf0f0f0f0)) (i64.const 2))
+
+(assert_return (invoke "select-f32" (f32.const nan) (f32.const 1) (i32.const 1)) (f32.const nan))
+(assert_return (invoke "select-f32" (f32.const nan:0x20304) (f32.const 1) (i32.const 1)) (f32.const nan:0x20304))
+(assert_return (invoke "select-f32" (f32.const nan) (f32.const 1) (i32.const 0)) (f32.const 1))
+(assert_return (invoke "select-f32" (f32.const nan:0x20304) (f32.const 1) (i32.const 0)) (f32.const 1))
+(assert_return (invoke "select-f32" (f32.const 2) (f32.const nan) (i32.const 1)) (f32.const 2))
+(assert_return (invoke "select-f32" (f32.const 2) (f32.const nan:0x20304) (i32.const 1)) (f32.const 2))
+(assert_return (invoke "select-f32" (f32.const 2) (f32.const nan) (i32.const 0)) (f32.const nan))
+(assert_return (invoke "select-f32" (f32.const 2) (f32.const nan:0x20304) (i32.const 0)) (f32.const nan:0x20304))
+
+(assert_return (invoke "select-f64" (f64.const nan) (f64.const 1) (i32.const 1)) (f64.const nan))
+(assert_return (invoke "select-f64" (f64.const nan:0x20304) (f64.const 1) (i32.const 1)) (f64.const nan:0x20304))
+(assert_return (invoke "select-f64" (f64.const nan) (f64.const 1) (i32.const 0)) (f64.const 1))
+(assert_return (invoke "select-f64" (f64.const nan:0x20304) (f64.const 1) (i32.const 0)) (f64.const 1))
+(assert_return (invoke "select-f64" (f64.const 2) (f64.const nan) (i32.const 1)) (f64.const 2))
+(assert_return (invoke "select-f64" (f64.const 2) (f64.const nan:0x20304) (i32.const 1)) (f64.const 2))
+(assert_return (invoke "select-f64" (f64.const 2) (f64.const nan) (i32.const 0)) (f64.const nan))
+(assert_return (invoke "select-f64" (f64.const 2) (f64.const nan:0x20304) (i32.const 0)) (f64.const nan:0x20304))
+
+;; (assert_return (invoke "select-i32-t" (i32.const 1) (i32.const 2) (i32.const 1)) (i32.const 1))
+;; (assert_return (invoke "select-i64-t" (i64.const 2) (i64.const 1) (i32.const 1)) (i64.const 2))
+;; (assert_return (invoke "select-f32-t" (f32.const 1) (f32.const 2) (i32.const 1)) (f32.const 1))
+;; (assert_return (invoke "select-f64-t" (f64.const 1) (f64.const 2) (i32.const 1)) (f64.const 1))
+;; (assert_return (invoke "select-funcref" (ref.null func) (ref.null func) (i32.const 1)) (ref.null func))
+;; (assert_return (invoke "select-externref" (ref.extern 1) (ref.extern 2) (i32.const 1)) (ref.extern 1))
+
+;; (assert_return (invoke "select-i32-t" (i32.const 1) (i32.const 2) (i32.const 0)) (i32.const 2))
+;; (assert_return (invoke "select-i32-t" (i32.const 2) (i32.const 1) (i32.const 0)) (i32.const 1))
+;; (assert_return (invoke "select-i64-t" (i64.const 2) (i64.const 1) (i32.const -1)) (i64.const 2))
+;; (assert_return (invoke "select-i64-t" (i64.const 2) (i64.const 1) (i32.const 0xf0f0f0f0)) (i64.const 2))
+;; (assert_return (invoke "select-externref" (ref.extern 1) (ref.extern 2) (i32.const 0)) (ref.extern 2))
+;; (assert_return (invoke "select-externref" (ref.extern 2) (ref.extern 1) (i32.const 0)) (ref.extern 1))
+
+;; (assert_return (invoke "select-f32-t" (f32.const nan) (f32.const 1) (i32.const 1)) (f32.const nan))
+;; (assert_return (invoke "select-f32-t" (f32.const nan:0x20304) (f32.const 1) (i32.const 1)) (f32.const nan:0x20304))
+;; (assert_return (invoke "select-f32-t" (f32.const nan) (f32.const 1) (i32.const 0)) (f32.const 1))
+;; (assert_return (invoke "select-f32-t" (f32.const nan:0x20304) (f32.const 1) (i32.const 0)) (f32.const 1))
+;; (assert_return (invoke "select-f32-t" (f32.const 2) (f32.const nan) (i32.const 1)) (f32.const 2))
+;; (assert_return (invoke "select-f32-t" (f32.const 2) (f32.const nan:0x20304) (i32.const 1)) (f32.const 2))
+;; (assert_return (invoke "select-f32-t" (f32.const 2) (f32.const nan) (i32.const 0)) (f32.const nan))
+;; (assert_return (invoke "select-f32-t" (f32.const 2) (f32.const nan:0x20304) (i32.const 0)) (f32.const nan:0x20304))
+
+;; (assert_return (invoke "select-f64-t" (f64.const nan) (f64.const 1) (i32.const 1)) (f64.const nan))
+;; (assert_return (invoke "select-f64-t" (f64.const nan:0x20304) (f64.const 1) (i32.const 1)) (f64.const nan:0x20304))
+;; (assert_return (invoke "select-f64-t" (f64.const nan) (f64.const 1) (i32.const 0)) (f64.const 1))
+;; (assert_return (invoke "select-f64-t" (f64.const nan:0x20304) (f64.const 1) (i32.const 0)) (f64.const 1))
+;; (assert_return (invoke "select-f64-t" (f64.const 2) (f64.const nan) (i32.const 1)) (f64.const 2))
+;; (assert_return (invoke "select-f64-t" (f64.const 2) (f64.const nan:0x20304) (i32.const 1)) (f64.const 2))
+;; (assert_return (invoke "select-f64-t" (f64.const 2) (f64.const nan) (i32.const 0)) (f64.const nan))
+;; (assert_return (invoke "select-f64-t" (f64.const 2) (f64.const nan:0x20304) (i32.const 0)) (f64.const nan:0x20304))
+
+;; (assert_return (invoke "as-select-first" (i32.const 0)) (i32.const 1))
+;; (assert_return (invoke "as-select-first" (i32.const 1)) (i32.const 0))
+;; (assert_return (invoke "as-select-mid" (i32.const 0)) (i32.const 2))
+;; (assert_return (invoke "as-select-mid" (i32.const 1)) (i32.const 2))
+;; (assert_return (invoke "as-select-last" (i32.const 0)) (i32.const 2))
+;; (assert_return (invoke "as-select-last" (i32.const 1)) (i32.const 3))
+
+;; (assert_return (invoke "as-loop-first" (i32.const 0)) (i32.const 3))
+;; (assert_return (invoke "as-loop-first" (i32.const 1)) (i32.const 2))
+;; (assert_return (invoke "as-loop-mid" (i32.const 0)) (i32.const 3))
+;; (assert_return (invoke "as-loop-mid" (i32.const 1)) (i32.const 2))
+;; (assert_return (invoke "as-loop-last" (i32.const 0)) (i32.const 3))
+;; (assert_return (invoke "as-loop-last" (i32.const 1)) (i32.const 2))
+
+;; (assert_return (invoke "as-if-condition" (i32.const 0)))
+;; (assert_return (invoke "as-if-condition" (i32.const 1)))
+;; (assert_return (invoke "as-if-then" (i32.const 0)) (i32.const 3))
+;; (assert_return (invoke "as-if-then" (i32.const 1)) (i32.const 2))
+;; (assert_return (invoke "as-if-else" (i32.const 0)) (i32.const 3))
+;; (assert_return (invoke "as-if-else" (i32.const 1)) (i32.const 2))
+
+;; (assert_return (invoke "as-br_if-first" (i32.const 0)) (i32.const 3))
+;; (assert_return (invoke "as-br_if-first" (i32.const 1)) (i32.const 2))
+;; (assert_return (invoke "as-br_if-last" (i32.const 0)) (i32.const 2))
+;; (assert_return (invoke "as-br_if-last" (i32.const 1)) (i32.const 2))
+
+;; (assert_return (invoke "as-br_table-first" (i32.const 0)) (i32.const 3))
+;; (assert_return (invoke "as-br_table-first" (i32.const 1)) (i32.const 2))
+;; (assert_return (invoke "as-br_table-last" (i32.const 0)) (i32.const 2))
+;; (assert_return (invoke "as-br_table-last" (i32.const 1)) (i32.const 2))
+
+;; (assert_return (invoke "as-call_indirect-first" (i32.const 0)) (i32.const 3))
+;; (assert_return (invoke "as-call_indirect-first" (i32.const 1)) (i32.const 2))
+;; (assert_return (invoke "as-call_indirect-mid" (i32.const 0)) (i32.const 1))
+;; (assert_return (invoke "as-call_indirect-mid" (i32.const 1)) (i32.const 1))
+;; (assert_trap (invoke "as-call_indirect-last" (i32.const 0)) "undefined element")
+;; (assert_trap (invoke "as-call_indirect-last" (i32.const 1)) "undefined element")
+
+;; (assert_return (invoke "as-store-first" (i32.const 0)))
+;; (assert_return (invoke "as-store-first" (i32.const 1)))
+;; (assert_return (invoke "as-store-last" (i32.const 0)))
+;; (assert_return (invoke "as-store-last" (i32.const 1)))
+
+;; (assert_return (invoke "as-memory.grow-value" (i32.const 0)) (i32.const 1))
+;; (assert_return (invoke "as-memory.grow-value" (i32.const 1)) (i32.const 3))
+
+;; (assert_return (invoke "as-call-value" (i32.const 0)) (i32.const 2))
+;; (assert_return (invoke "as-call-value" (i32.const 1)) (i32.const 1))
+;; (assert_return (invoke "as-return-value" (i32.const 0)) (i32.const 2))
+;; (assert_return (invoke "as-return-value" (i32.const 1)) (i32.const 1))
+;; (assert_return (invoke "as-drop-operand" (i32.const 0)))
+;; (assert_return (invoke "as-drop-operand" (i32.const 1)))
+;; (assert_return (invoke "as-br-value" (i32.const 0)) (i32.const 2))
+;; (assert_return (invoke "as-br-value" (i32.const 1)) (i32.const 1))
+;; (assert_return (invoke "as-local.set-value" (i32.const 0)) (i32.const 2))
+;; (assert_return (invoke "as-local.set-value" (i32.const 1)) (i32.const 1))
+;; (assert_return (invoke "as-local.tee-value" (i32.const 0)) (i32.const 2))
+;; (assert_return (invoke "as-local.tee-value" (i32.const 1)) (i32.const 1))
+;; (assert_return (invoke "as-global.set-value" (i32.const 0)) (i32.const 2))
+;; (assert_return (invoke "as-global.set-value" (i32.const 1)) (i32.const 1))
+;; (assert_return (invoke "as-load-operand" (i32.const 0)) (i32.const 1))
+;; (assert_return (invoke "as-load-operand" (i32.const 1)) (i32.const 1))
+
+;; (assert_return (invoke "as-unary-operand" (i32.const 0)) (i32.const 0))
+;; (assert_return (invoke "as-unary-operand" (i32.const 1)) (i32.const 1))
+;; (assert_return (invoke "as-binary-operand" (i32.const 0)) (i32.const 4))
+;; (assert_return (invoke "as-binary-operand" (i32.const 1)) (i32.const 1))
+;; (assert_return (invoke "as-test-operand" (i32.const 0)) (i32.const 0))
+;; (assert_return (invoke "as-test-operand" (i32.const 1)) (i32.const 1))
+;; (assert_return (invoke "as-compare-left" (i32.const 0)) (i32.const 0))
+;; (assert_return (invoke "as-compare-left" (i32.const 1)) (i32.const 1))
+;; (assert_return (invoke "as-compare-right" (i32.const 0)) (i32.const 0))
+;; (assert_return (invoke "as-compare-right" (i32.const 1)) (i32.const 1))
+;; (assert_return (invoke "as-convert-operand" (i32.const 0)) (i32.const 0))
+;; (assert_return (invoke "as-convert-operand" (i32.const 1)) (i32.const 1))
+
+;; (assert_invalid
+;; (module (func $arity-0-implicit (select (nop) (nop) (i32.const 1))))
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module (func $arity-0 (select (result) (nop) (nop) (i32.const 1))))
+;; "invalid result arity"
+;; )
+;; (assert_invalid
+;; (module (func $arity-2 (result i32 i32)
+;; (select (result i32 i32)
+;; (i32.const 0) (i32.const 0)
+;; (i32.const 0) (i32.const 0)
+;; (i32.const 1)
+;; )
+;; ))
+;; "invalid result arity"
+;; )
+
+
+;; (assert_invalid
+;; (module (func $type-externref-implicit (param $r externref)
+;; (drop (select (local.get $r) (local.get $r) (i32.const 1)))
+;; ))
+;; "type mismatch"
+;; )
+
+;; (assert_invalid
+;; (module (func $type-num-vs-num
+;; (drop (select (i32.const 1) (i64.const 1) (i32.const 1)))
+;; ))
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module (func $type-num-vs-num
+;; (drop (select (i32.const 1) (f32.const 1.0) (i32.const 1)))
+;; ))
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module (func $type-num-vs-num
+;; (drop (select (i32.const 1) (f64.const 1.0) (i32.const 1)))
+;; ))
+;; "type mismatch"
+;; )
+
+;; (assert_invalid
+;; (module (func $type-num-vs-num (select (i32.const 1) (i64.const 1) (i32.const 1)) (drop)))
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module (func $type-num-vs-num (select (i32.const 1) (f32.const 1.0) (i32.const 1)) (drop)))
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module (func $type-num-vs-num (select (i32.const 1) (i64.const 1) (i32.const 1)) (drop)))
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module (func $type-num-vs-num (select (i32.const 1) (f32.const 1.0) (i32.const 1)) (drop)))
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module (func $type-num-vs-num (select (i32.const 1) (f64.const 1.0) (i32.const 1)) (drop)))
+;; "type mismatch"
+;; )
+
+
+;; (assert_invalid
+;; (module
+;; (func $type-1st-operand-empty
+;; (select) (drop)
+;; )
+;; )
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module
+;; (func $type-2nd-operand-empty
+;; (i32.const 0) (select) (drop)
+;; )
+;; )
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module
+;; (func $type-3rd-operand-empty
+;; (i32.const 0) (i32.const 0) (select) (drop)
+;; )
+;; )
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module
+;; (func $type-1st-operand-empty-in-block
+;; (i32.const 0) (i32.const 0) (i32.const 0)
+;; (block (select) (drop))
+;; )
+;; )
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module
+;; (func $type-2nd-operand-empty-in-block
+;; (i32.const 0) (i32.const 0)
+;; (block (i32.const 0) (select) (drop))
+;; )
+;; )
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module
+;; (func $type-3rd-operand-empty-in-block
+;; (i32.const 0)
+;; (block (i32.const 0) (i32.const 0) (select) (drop))
+;; )
+;; )
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module
+;; (func $type-1st-operand-empty-in-loop
+;; (i32.const 0) (i32.const 0) (i32.const 0)
+;; (loop (select) (drop))
+;; )
+;; )
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module
+;; (func $type-2nd-operand-empty-in-loop
+;; (i32.const 0) (i32.const 0)
+;; (loop (i32.const 0) (select) (drop))
+;; )
+;; )
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module
+;; (func $type-3rd-operand-empty-in-loop
+;; (i32.const 0)
+;; (loop (i32.const 0) (i32.const 0) (select) (drop))
+;; )
+;; )
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module
+;; (func $type-1st-operand-empty-in-then
+;; (i32.const 0) (i32.const 0) (i32.const 0)
+;; (if (then (select) (drop)))
+;; )
+;; )
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module
+;; (func $type-2nd-operand-empty-in-then
+;; (i32.const 0) (i32.const 0)
+;; (if (then (i32.const 0) (select) (drop)))
+;; )
+;; )
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module
+;; (func $type-3rd-operand-empty-in-then
+;; (i32.const 0)
+;; (if (then (i32.const 0) (i32.const 0) (select) (drop)))
+;; )
+;; )
+;; "type mismatch"
+;; )
+
+;; ;; Third operand must be i32
+
+;; (assert_invalid
+;; (module (func (select (i32.const 1) (i32.const 1) (i64.const 1)) (drop)))
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module (func (select (i32.const 1) (i32.const 1) (f32.const 1)) (drop)))
+;; "type mismatch"
+;; )
+;; (assert_invalid
+;; (module (func (select (i32.const 1) (i32.const 1) (f64.const 1)) (drop)))
+;; "type mismatch"
+;; )
+
+;; ;; Result of select has type of first two operands
+
+;; (assert_invalid
+;; (module (func (result i32) (select (i64.const 1) (i64.const 1) (i32.const 1))))
+;; "type mismatch"
+;; )
+
+
+;; ;; Flat syntax
+
+;; (module
+;; (table 1 funcref)
+;; (func (result i32) unreachable select)
+;; (func (result i32) unreachable select nop)
+;; (func (result i32) unreachable select (select))
+;; (func (result i32) unreachable select select)
+;; (func (result i32) unreachable select select select)
+;; (func (result i32) unreachable select (result i32))
+;; (func (result i32) unreachable select (result i32) (result))
+;; (func (result i32) unreachable select (result i32) (result) select)
+;; (func (result i32) unreachable select (result) (result i32) select (result i32))
+;; (func (result i32) unreachable select call_indirect)
+;; (func (result i32) unreachable select call_indirect select)
+;; )