From ba30264e5da6f8565cbe09882eea2782f3f1412f Mon Sep 17 00:00:00 2001 From: Henry Date: Mon, 25 Dec 2023 14:55:06 +0100 Subject: feat: bit operations Signed-off-by: Henry --- examples/wast/i32.wast | 1556 ++++++++++++++++++++++++------------------------ 1 file changed, 778 insertions(+), 778 deletions(-) (limited to 'examples/wast') diff --git a/examples/wast/i32.wast b/examples/wast/i32.wast index 3329dc9..dd883b9 100644 --- a/examples/wast/i32.wast +++ b/examples/wast/i32.wast @@ -99,84 +99,84 @@ (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_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 "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 "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_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_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 "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 "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)) @@ -283,703 +283,703 @@ ;; (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 "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 "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 "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 "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 "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_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" -;; ) - - -;; ;; 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_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_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 "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_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_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_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_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-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 + +(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" +) -- cgit v1.3.1