...

Text file src/github.com/tetratelabs/wazero/internal/integration_test/spectest/v1/testdata/i32.wast

Documentation: github.com/tetratelabs/wazero/internal/integration_test/spectest/v1/testdata

     1;; i32 operations
     2
     3(module
     4  (func (export "add") (param $x i32) (param $y i32) (result i32) (i32.add (local.get $x) (local.get $y)))
     5  (func (export "sub") (param $x i32) (param $y i32) (result i32) (i32.sub (local.get $x) (local.get $y)))
     6  (func (export "mul") (param $x i32) (param $y i32) (result i32) (i32.mul (local.get $x) (local.get $y)))
     7  (func (export "div_s") (param $x i32) (param $y i32) (result i32) (i32.div_s (local.get $x) (local.get $y)))
     8  (func (export "div_u") (param $x i32) (param $y i32) (result i32) (i32.div_u (local.get $x) (local.get $y)))
     9  (func (export "rem_s") (param $x i32) (param $y i32) (result i32) (i32.rem_s (local.get $x) (local.get $y)))
    10  (func (export "rem_u") (param $x i32) (param $y i32) (result i32) (i32.rem_u (local.get $x) (local.get $y)))
    11  (func (export "and") (param $x i32) (param $y i32) (result i32) (i32.and (local.get $x) (local.get $y)))
    12  (func (export "or") (param $x i32) (param $y i32) (result i32) (i32.or (local.get $x) (local.get $y)))
    13  (func (export "xor") (param $x i32) (param $y i32) (result i32) (i32.xor (local.get $x) (local.get $y)))
    14  (func (export "shl") (param $x i32) (param $y i32) (result i32) (i32.shl (local.get $x) (local.get $y)))
    15  (func (export "shr_s") (param $x i32) (param $y i32) (result i32) (i32.shr_s (local.get $x) (local.get $y)))
    16  (func (export "shr_u") (param $x i32) (param $y i32) (result i32) (i32.shr_u (local.get $x) (local.get $y)))
    17  (func (export "rotl") (param $x i32) (param $y i32) (result i32) (i32.rotl (local.get $x) (local.get $y)))
    18  (func (export "rotr") (param $x i32) (param $y i32) (result i32) (i32.rotr (local.get $x) (local.get $y)))
    19  (func (export "clz") (param $x i32) (result i32) (i32.clz (local.get $x)))
    20  (func (export "ctz") (param $x i32) (result i32) (i32.ctz (local.get $x)))
    21  (func (export "popcnt") (param $x i32) (result i32) (i32.popcnt (local.get $x)))
    22  (func (export "eqz") (param $x i32) (result i32) (i32.eqz (local.get $x)))
    23  (func (export "eq") (param $x i32) (param $y i32) (result i32) (i32.eq (local.get $x) (local.get $y)))
    24  (func (export "ne") (param $x i32) (param $y i32) (result i32) (i32.ne (local.get $x) (local.get $y)))
    25  (func (export "lt_s") (param $x i32) (param $y i32) (result i32) (i32.lt_s (local.get $x) (local.get $y)))
    26  (func (export "lt_u") (param $x i32) (param $y i32) (result i32) (i32.lt_u (local.get $x) (local.get $y)))
    27  (func (export "le_s") (param $x i32) (param $y i32) (result i32) (i32.le_s (local.get $x) (local.get $y)))
    28  (func (export "le_u") (param $x i32) (param $y i32) (result i32) (i32.le_u (local.get $x) (local.get $y)))
    29  (func (export "gt_s") (param $x i32) (param $y i32) (result i32) (i32.gt_s (local.get $x) (local.get $y)))
    30  (func (export "gt_u") (param $x i32) (param $y i32) (result i32) (i32.gt_u (local.get $x) (local.get $y)))
    31  (func (export "ge_s") (param $x i32) (param $y i32) (result i32) (i32.ge_s (local.get $x) (local.get $y)))
    32  (func (export "ge_u") (param $x i32) (param $y i32) (result i32) (i32.ge_u (local.get $x) (local.get $y)))
    33)
    34
    35(assert_return (invoke "add" (i32.const 1) (i32.const 1)) (i32.const 2))
    36(assert_return (invoke "add" (i32.const 1) (i32.const 0)) (i32.const 1))
    37(assert_return (invoke "add" (i32.const -1) (i32.const -1)) (i32.const -2))
    38(assert_return (invoke "add" (i32.const -1) (i32.const 1)) (i32.const 0))
    39(assert_return (invoke "add" (i32.const 0x7fffffff) (i32.const 1)) (i32.const 0x80000000))
    40(assert_return (invoke "add" (i32.const 0x80000000) (i32.const -1)) (i32.const 0x7fffffff))
    41(assert_return (invoke "add" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 0))
    42(assert_return (invoke "add" (i32.const 0x3fffffff) (i32.const 1)) (i32.const 0x40000000))
    43
    44(assert_return (invoke "sub" (i32.const 1) (i32.const 1)) (i32.const 0))
    45(assert_return (invoke "sub" (i32.const 1) (i32.const 0)) (i32.const 1))
    46(assert_return (invoke "sub" (i32.const -1) (i32.const -1)) (i32.const 0))
    47(assert_return (invoke "sub" (i32.const 0x7fffffff) (i32.const -1)) (i32.const 0x80000000))
    48(assert_return (invoke "sub" (i32.const 0x80000000) (i32.const 1)) (i32.const 0x7fffffff))
    49(assert_return (invoke "sub" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 0))
    50(assert_return (invoke "sub" (i32.const 0x3fffffff) (i32.const -1)) (i32.const 0x40000000))
    51
    52(assert_return (invoke "mul" (i32.const 1) (i32.const 1)) (i32.const 1))
    53(assert_return (invoke "mul" (i32.const 1) (i32.const 0)) (i32.const 0))
    54(assert_return (invoke "mul" (i32.const -1) (i32.const -1)) (i32.const 1))
    55(assert_return (invoke "mul" (i32.const 0x10000000) (i32.const 4096)) (i32.const 0))
    56(assert_return (invoke "mul" (i32.const 0x80000000) (i32.const 0)) (i32.const 0))
    57(assert_return (invoke "mul" (i32.const 0x80000000) (i32.const -1)) (i32.const 0x80000000))
    58(assert_return (invoke "mul" (i32.const 0x7fffffff) (i32.const -1)) (i32.const 0x80000001))
    59(assert_return (invoke "mul" (i32.const 0x01234567) (i32.const 0x76543210)) (i32.const 0x358e7470))
    60(assert_return (invoke "mul" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 1))
    61
    62(assert_trap (invoke "div_s" (i32.const 1) (i32.const 0)) "integer divide by zero")
    63(assert_trap (invoke "div_s" (i32.const 0) (i32.const 0)) "integer divide by zero")
    64(assert_trap (invoke "div_s" (i32.const 0x80000000) (i32.const -1)) "integer overflow")
    65(assert_return (invoke "div_s" (i32.const 1) (i32.const 1)) (i32.const 1))
    66(assert_return (invoke "div_s" (i32.const 0) (i32.const 1)) (i32.const 0))
    67(assert_return (invoke "div_s" (i32.const 0) (i32.const -1)) (i32.const 0))
    68(assert_return (invoke "div_s" (i32.const -1) (i32.const -1)) (i32.const 1))
    69(assert_return (invoke "div_s" (i32.const 0x80000000) (i32.const 2)) (i32.const 0xc0000000))
    70(assert_return (invoke "div_s" (i32.const 0x80000001) (i32.const 1000)) (i32.const 0xffdf3b65))
    71(assert_return (invoke "div_s" (i32.const 5) (i32.const 2)) (i32.const 2))
    72(assert_return (invoke "div_s" (i32.const -5) (i32.const 2)) (i32.const -2))
    73(assert_return (invoke "div_s" (i32.const 5) (i32.const -2)) (i32.const -2))
    74(assert_return (invoke "div_s" (i32.const -5) (i32.const -2)) (i32.const 2))
    75(assert_return (invoke "div_s" (i32.const 7) (i32.const 3)) (i32.const 2))
    76(assert_return (invoke "div_s" (i32.const -7) (i32.const 3)) (i32.const -2))
    77(assert_return (invoke "div_s" (i32.const 7) (i32.const -3)) (i32.const -2))
    78(assert_return (invoke "div_s" (i32.const -7) (i32.const -3)) (i32.const 2))
    79(assert_return (invoke "div_s" (i32.const 11) (i32.const 5)) (i32.const 2))
    80(assert_return (invoke "div_s" (i32.const 17) (i32.const 7)) (i32.const 2))
    81
    82(assert_trap (invoke "div_u" (i32.const 1) (i32.const 0)) "integer divide by zero")
    83(assert_trap (invoke "div_u" (i32.const 0) (i32.const 0)) "integer divide by zero")
    84(assert_return (invoke "div_u" (i32.const 1) (i32.const 1)) (i32.const 1))
    85(assert_return (invoke "div_u" (i32.const 0) (i32.const 1)) (i32.const 0))
    86(assert_return (invoke "div_u" (i32.const -1) (i32.const -1)) (i32.const 1))
    87(assert_return (invoke "div_u" (i32.const 0x80000000) (i32.const -1)) (i32.const 0))
    88(assert_return (invoke "div_u" (i32.const 0x80000000) (i32.const 2)) (i32.const 0x40000000))
    89(assert_return (invoke "div_u" (i32.const 0x8ff00ff0) (i32.const 0x10001)) (i32.const 0x8fef))
    90(assert_return (invoke "div_u" (i32.const 0x80000001) (i32.const 1000)) (i32.const 0x20c49b))
    91(assert_return (invoke "div_u" (i32.const 5) (i32.const 2)) (i32.const 2))
    92(assert_return (invoke "div_u" (i32.const -5) (i32.const 2)) (i32.const 0x7ffffffd))
    93(assert_return (invoke "div_u" (i32.const 5) (i32.const -2)) (i32.const 0))
    94(assert_return (invoke "div_u" (i32.const -5) (i32.const -2)) (i32.const 0))
    95(assert_return (invoke "div_u" (i32.const 7) (i32.const 3)) (i32.const 2))
    96(assert_return (invoke "div_u" (i32.const 11) (i32.const 5)) (i32.const 2))
    97(assert_return (invoke "div_u" (i32.const 17) (i32.const 7)) (i32.const 2))
    98
    99(assert_trap (invoke "rem_s" (i32.const 1) (i32.const 0)) "integer divide by zero")
   100(assert_trap (invoke "rem_s" (i32.const 0) (i32.const 0)) "integer divide by zero")
   101(assert_return (invoke "rem_s" (i32.const 0x7fffffff) (i32.const -1)) (i32.const 0))
   102(assert_return (invoke "rem_s" (i32.const 1) (i32.const 1)) (i32.const 0))
   103(assert_return (invoke "rem_s" (i32.const 0) (i32.const 1)) (i32.const 0))
   104(assert_return (invoke "rem_s" (i32.const 0) (i32.const -1)) (i32.const 0))
   105(assert_return (invoke "rem_s" (i32.const -1) (i32.const -1)) (i32.const 0))
   106(assert_return (invoke "rem_s" (i32.const 0x80000000) (i32.const -1)) (i32.const 0))
   107(assert_return (invoke "rem_s" (i32.const 0x80000000) (i32.const 2)) (i32.const 0))
   108(assert_return (invoke "rem_s" (i32.const 0x80000001) (i32.const 1000)) (i32.const -647))
   109(assert_return (invoke "rem_s" (i32.const 5) (i32.const 2)) (i32.const 1))
   110(assert_return (invoke "rem_s" (i32.const -5) (i32.const 2)) (i32.const -1))
   111(assert_return (invoke "rem_s" (i32.const 5) (i32.const -2)) (i32.const 1))
   112(assert_return (invoke "rem_s" (i32.const -5) (i32.const -2)) (i32.const -1))
   113(assert_return (invoke "rem_s" (i32.const 7) (i32.const 3)) (i32.const 1))
   114(assert_return (invoke "rem_s" (i32.const -7) (i32.const 3)) (i32.const -1))
   115(assert_return (invoke "rem_s" (i32.const 7) (i32.const -3)) (i32.const 1))
   116(assert_return (invoke "rem_s" (i32.const -7) (i32.const -3)) (i32.const -1))
   117(assert_return (invoke "rem_s" (i32.const 11) (i32.const 5)) (i32.const 1))
   118(assert_return (invoke "rem_s" (i32.const 17) (i32.const 7)) (i32.const 3))
   119
   120(assert_trap (invoke "rem_u" (i32.const 1) (i32.const 0)) "integer divide by zero")
   121(assert_trap (invoke "rem_u" (i32.const 0) (i32.const 0)) "integer divide by zero")
   122(assert_return (invoke "rem_u" (i32.const 1) (i32.const 1)) (i32.const 0))
   123(assert_return (invoke "rem_u" (i32.const 0) (i32.const 1)) (i32.const 0))
   124(assert_return (invoke "rem_u" (i32.const -1) (i32.const -1)) (i32.const 0))
   125(assert_return (invoke "rem_u" (i32.const 0x80000000) (i32.const -1)) (i32.const 0x80000000))
   126(assert_return (invoke "rem_u" (i32.const 0x80000000) (i32.const 2)) (i32.const 0))
   127(assert_return (invoke "rem_u" (i32.const 0x8ff00ff0) (i32.const 0x10001)) (i32.const 0x8001))
   128(assert_return (invoke "rem_u" (i32.const 0x80000001) (i32.const 1000)) (i32.const 649))
   129(assert_return (invoke "rem_u" (i32.const 5) (i32.const 2)) (i32.const 1))
   130(assert_return (invoke "rem_u" (i32.const -5) (i32.const 2)) (i32.const 1))
   131(assert_return (invoke "rem_u" (i32.const 5) (i32.const -2)) (i32.const 5))
   132(assert_return (invoke "rem_u" (i32.const -5) (i32.const -2)) (i32.const -5))
   133(assert_return (invoke "rem_u" (i32.const 7) (i32.const 3)) (i32.const 1))
   134(assert_return (invoke "rem_u" (i32.const 11) (i32.const 5)) (i32.const 1))
   135(assert_return (invoke "rem_u" (i32.const 17) (i32.const 7)) (i32.const 3))
   136
   137(assert_return (invoke "and" (i32.const 1) (i32.const 0)) (i32.const 0))
   138(assert_return (invoke "and" (i32.const 0) (i32.const 1)) (i32.const 0))
   139(assert_return (invoke "and" (i32.const 1) (i32.const 1)) (i32.const 1))
   140(assert_return (invoke "and" (i32.const 0) (i32.const 0)) (i32.const 0))
   141(assert_return (invoke "and" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 0))
   142(assert_return (invoke "and" (i32.const 0x7fffffff) (i32.const -1)) (i32.const 0x7fffffff))
   143(assert_return (invoke "and" (i32.const 0xf0f0ffff) (i32.const 0xfffff0f0)) (i32.const 0xf0f0f0f0))
   144(assert_return (invoke "and" (i32.const 0xffffffff) (i32.const 0xffffffff)) (i32.const 0xffffffff))
   145
   146(assert_return (invoke "or" (i32.const 1) (i32.const 0)) (i32.const 1))
   147(assert_return (invoke "or" (i32.const 0) (i32.const 1)) (i32.const 1))
   148(assert_return (invoke "or" (i32.const 1) (i32.const 1)) (i32.const 1))
   149(assert_return (invoke "or" (i32.const 0) (i32.const 0)) (i32.const 0))
   150(assert_return (invoke "or" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const -1))
   151(assert_return (invoke "or" (i32.const 0x80000000) (i32.const 0)) (i32.const 0x80000000))
   152(assert_return (invoke "or" (i32.const 0xf0f0ffff) (i32.const 0xfffff0f0)) (i32.const 0xffffffff))
   153(assert_return (invoke "or" (i32.const 0xffffffff) (i32.const 0xffffffff)) (i32.const 0xffffffff))
   154
   155(assert_return (invoke "xor" (i32.const 1) (i32.const 0)) (i32.const 1))
   156(assert_return (invoke "xor" (i32.const 0) (i32.const 1)) (i32.const 1))
   157(assert_return (invoke "xor" (i32.const 1) (i32.const 1)) (i32.const 0))
   158(assert_return (invoke "xor" (i32.const 0) (i32.const 0)) (i32.const 0))
   159(assert_return (invoke "xor" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const -1))
   160(assert_return (invoke "xor" (i32.const 0x80000000) (i32.const 0)) (i32.const 0x80000000))
   161(assert_return (invoke "xor" (i32.const -1) (i32.const 0x80000000)) (i32.const 0x7fffffff))
   162(assert_return (invoke "xor" (i32.const -1) (i32.const 0x7fffffff)) (i32.const 0x80000000))
   163(assert_return (invoke "xor" (i32.const 0xf0f0ffff) (i32.const 0xfffff0f0)) (i32.const 0x0f0f0f0f))
   164(assert_return (invoke "xor" (i32.const 0xffffffff) (i32.const 0xffffffff)) (i32.const 0))
   165
   166(assert_return (invoke "shl" (i32.const 1) (i32.const 1)) (i32.const 2))
   167(assert_return (invoke "shl" (i32.const 1) (i32.const 0)) (i32.const 1))
   168(assert_return (invoke "shl" (i32.const 0x7fffffff) (i32.const 1)) (i32.const 0xfffffffe))
   169(assert_return (invoke "shl" (i32.const 0xffffffff) (i32.const 1)) (i32.const 0xfffffffe))
   170(assert_return (invoke "shl" (i32.const 0x80000000) (i32.const 1)) (i32.const 0))
   171(assert_return (invoke "shl" (i32.const 0x40000000) (i32.const 1)) (i32.const 0x80000000))
   172(assert_return (invoke "shl" (i32.const 1) (i32.const 31)) (i32.const 0x80000000))
   173(assert_return (invoke "shl" (i32.const 1) (i32.const 32)) (i32.const 1))
   174(assert_return (invoke "shl" (i32.const 1) (i32.const 33)) (i32.const 2))
   175(assert_return (invoke "shl" (i32.const 1) (i32.const -1)) (i32.const 0x80000000))
   176(assert_return (invoke "shl" (i32.const 1) (i32.const 0x7fffffff)) (i32.const 0x80000000))
   177
   178(assert_return (invoke "shr_s" (i32.const 1) (i32.const 1)) (i32.const 0))
   179(assert_return (invoke "shr_s" (i32.const 1) (i32.const 0)) (i32.const 1))
   180(assert_return (invoke "shr_s" (i32.const -1) (i32.const 1)) (i32.const -1))
   181(assert_return (invoke "shr_s" (i32.const 0x7fffffff) (i32.const 1)) (i32.const 0x3fffffff))
   182(assert_return (invoke "shr_s" (i32.const 0x80000000) (i32.const 1)) (i32.const 0xc0000000))
   183(assert_return (invoke "shr_s" (i32.const 0x40000000) (i32.const 1)) (i32.const 0x20000000))
   184(assert_return (invoke "shr_s" (i32.const 1) (i32.const 32)) (i32.const 1))
   185(assert_return (invoke "shr_s" (i32.const 1) (i32.const 33)) (i32.const 0))
   186(assert_return (invoke "shr_s" (i32.const 1) (i32.const -1)) (i32.const 0))
   187(assert_return (invoke "shr_s" (i32.const 1) (i32.const 0x7fffffff)) (i32.const 0))
   188(assert_return (invoke "shr_s" (i32.const 1) (i32.const 0x80000000)) (i32.const 1))
   189(assert_return (invoke "shr_s" (i32.const 0x80000000) (i32.const 31)) (i32.const -1))
   190(assert_return (invoke "shr_s" (i32.const -1) (i32.const 32)) (i32.const -1))
   191(assert_return (invoke "shr_s" (i32.const -1) (i32.const 33)) (i32.const -1))
   192(assert_return (invoke "shr_s" (i32.const -1) (i32.const -1)) (i32.const -1))
   193(assert_return (invoke "shr_s" (i32.const -1) (i32.const 0x7fffffff)) (i32.const -1))
   194(assert_return (invoke "shr_s" (i32.const -1) (i32.const 0x80000000)) (i32.const -1))
   195
   196(assert_return (invoke "shr_u" (i32.const 1) (i32.const 1)) (i32.const 0))
   197(assert_return (invoke "shr_u" (i32.const 1) (i32.const 0)) (i32.const 1))
   198(assert_return (invoke "shr_u" (i32.const -1) (i32.const 1)) (i32.const 0x7fffffff))
   199(assert_return (invoke "shr_u" (i32.const 0x7fffffff) (i32.const 1)) (i32.const 0x3fffffff))
   200(assert_return (invoke "shr_u" (i32.const 0x80000000) (i32.const 1)) (i32.const 0x40000000))
   201(assert_return (invoke "shr_u" (i32.const 0x40000000) (i32.const 1)) (i32.const 0x20000000))
   202(assert_return (invoke "shr_u" (i32.const 1) (i32.const 32)) (i32.const 1))
   203(assert_return (invoke "shr_u" (i32.const 1) (i32.const 33)) (i32.const 0))
   204(assert_return (invoke "shr_u" (i32.const 1) (i32.const -1)) (i32.const 0))
   205(assert_return (invoke "shr_u" (i32.const 1) (i32.const 0x7fffffff)) (i32.const 0))
   206(assert_return (invoke "shr_u" (i32.const 1) (i32.const 0x80000000)) (i32.const 1))
   207(assert_return (invoke "shr_u" (i32.const 0x80000000) (i32.const 31)) (i32.const 1))
   208(assert_return (invoke "shr_u" (i32.const -1) (i32.const 32)) (i32.const -1))
   209(assert_return (invoke "shr_u" (i32.const -1) (i32.const 33)) (i32.const 0x7fffffff))
   210(assert_return (invoke "shr_u" (i32.const -1) (i32.const -1)) (i32.const 1))
   211(assert_return (invoke "shr_u" (i32.const -1) (i32.const 0x7fffffff)) (i32.const 1))
   212(assert_return (invoke "shr_u" (i32.const -1) (i32.const 0x80000000)) (i32.const -1))
   213
   214(assert_return (invoke "rotl" (i32.const 1) (i32.const 1)) (i32.const 2))
   215(assert_return (invoke "rotl" (i32.const 1) (i32.const 0)) (i32.const 1))
   216(assert_return (invoke "rotl" (i32.const -1) (i32.const 1)) (i32.const -1))
   217(assert_return (invoke "rotl" (i32.const 1) (i32.const 32)) (i32.const 1))
   218(assert_return (invoke "rotl" (i32.const 0xabcd9876) (i32.const 1)) (i32.const 0x579b30ed))
   219(assert_return (invoke "rotl" (i32.const 0xfe00dc00) (i32.const 4)) (i32.const 0xe00dc00f))
   220(assert_return (invoke "rotl" (i32.const 0xb0c1d2e3) (i32.const 5)) (i32.const 0x183a5c76))
   221(assert_return (invoke "rotl" (i32.const 0x00008000) (i32.const 37)) (i32.const 0x00100000))
   222(assert_return (invoke "rotl" (i32.const 0xb0c1d2e3) (i32.const 0xff05)) (i32.const 0x183a5c76))
   223(assert_return (invoke "rotl" (i32.const 0x769abcdf) (i32.const 0xffffffed)) (i32.const 0x579beed3))
   224(assert_return (invoke "rotl" (i32.const 0x769abcdf) (i32.const 0x8000000d)) (i32.const 0x579beed3))
   225(assert_return (invoke "rotl" (i32.const 1) (i32.const 31)) (i32.const 0x80000000))
   226(assert_return (invoke "rotl" (i32.const 0x80000000) (i32.const 1)) (i32.const 1))
   227
   228(assert_return (invoke "rotr" (i32.const 1) (i32.const 1)) (i32.const 0x80000000))
   229(assert_return (invoke "rotr" (i32.const 1) (i32.const 0)) (i32.const 1))
   230(assert_return (invoke "rotr" (i32.const -1) (i32.const 1)) (i32.const -1))
   231(assert_return (invoke "rotr" (i32.const 1) (i32.const 32)) (i32.const 1))
   232(assert_return (invoke "rotr" (i32.const 0xff00cc00) (i32.const 1)) (i32.const 0x7f806600))
   233(assert_return (invoke "rotr" (i32.const 0x00080000) (i32.const 4)) (i32.const 0x00008000))
   234(assert_return (invoke "rotr" (i32.const 0xb0c1d2e3) (i32.const 5)) (i32.const 0x1d860e97))
   235(assert_return (invoke "rotr" (i32.const 0x00008000) (i32.const 37)) (i32.const 0x00000400))
   236(assert_return (invoke "rotr" (i32.const 0xb0c1d2e3) (i32.const 0xff05)) (i32.const 0x1d860e97))
   237(assert_return (invoke "rotr" (i32.const 0x769abcdf) (i32.const 0xffffffed)) (i32.const 0xe6fbb4d5))
   238(assert_return (invoke "rotr" (i32.const 0x769abcdf) (i32.const 0x8000000d)) (i32.const 0xe6fbb4d5))
   239(assert_return (invoke "rotr" (i32.const 1) (i32.const 31)) (i32.const 2))
   240(assert_return (invoke "rotr" (i32.const 0x80000000) (i32.const 31)) (i32.const 1))
   241
   242(assert_return (invoke "clz" (i32.const 0xffffffff)) (i32.const 0))
   243(assert_return (invoke "clz" (i32.const 0)) (i32.const 32))
   244(assert_return (invoke "clz" (i32.const 0x00008000)) (i32.const 16))
   245(assert_return (invoke "clz" (i32.const 0xff)) (i32.const 24))
   246(assert_return (invoke "clz" (i32.const 0x80000000)) (i32.const 0))
   247(assert_return (invoke "clz" (i32.const 1)) (i32.const 31))
   248(assert_return (invoke "clz" (i32.const 2)) (i32.const 30))
   249(assert_return (invoke "clz" (i32.const 0x7fffffff)) (i32.const 1))
   250
   251(assert_return (invoke "ctz" (i32.const -1)) (i32.const 0))
   252(assert_return (invoke "ctz" (i32.const 0)) (i32.const 32))
   253(assert_return (invoke "ctz" (i32.const 0x00008000)) (i32.const 15))
   254(assert_return (invoke "ctz" (i32.const 0x00010000)) (i32.const 16))
   255(assert_return (invoke "ctz" (i32.const 0x80000000)) (i32.const 31))
   256(assert_return (invoke "ctz" (i32.const 0x7fffffff)) (i32.const 0))
   257
   258(assert_return (invoke "popcnt" (i32.const -1)) (i32.const 32))
   259(assert_return (invoke "popcnt" (i32.const 0)) (i32.const 0))
   260(assert_return (invoke "popcnt" (i32.const 0x00008000)) (i32.const 1))
   261(assert_return (invoke "popcnt" (i32.const 0x80008000)) (i32.const 2))
   262(assert_return (invoke "popcnt" (i32.const 0x7fffffff)) (i32.const 31))
   263(assert_return (invoke "popcnt" (i32.const 0xAAAAAAAA)) (i32.const 16))
   264(assert_return (invoke "popcnt" (i32.const 0x55555555)) (i32.const 16))
   265(assert_return (invoke "popcnt" (i32.const 0xDEADBEEF)) (i32.const 24))
   266
   267(assert_return (invoke "eqz" (i32.const 0)) (i32.const 1))
   268(assert_return (invoke "eqz" (i32.const 1)) (i32.const 0))
   269(assert_return (invoke "eqz" (i32.const 0x80000000)) (i32.const 0))
   270(assert_return (invoke "eqz" (i32.const 0x7fffffff)) (i32.const 0))
   271(assert_return (invoke "eqz" (i32.const 0xffffffff)) (i32.const 0))
   272
   273(assert_return (invoke "eq" (i32.const 0) (i32.const 0)) (i32.const 1))
   274(assert_return (invoke "eq" (i32.const 1) (i32.const 1)) (i32.const 1))
   275(assert_return (invoke "eq" (i32.const -1) (i32.const 1)) (i32.const 0))
   276(assert_return (invoke "eq" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 1))
   277(assert_return (invoke "eq" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 1))
   278(assert_return (invoke "eq" (i32.const -1) (i32.const -1)) (i32.const 1))
   279(assert_return (invoke "eq" (i32.const 1) (i32.const 0)) (i32.const 0))
   280(assert_return (invoke "eq" (i32.const 0) (i32.const 1)) (i32.const 0))
   281(assert_return (invoke "eq" (i32.const 0x80000000) (i32.const 0)) (i32.const 0))
   282(assert_return (invoke "eq" (i32.const 0) (i32.const 0x80000000)) (i32.const 0))
   283(assert_return (invoke "eq" (i32.const 0x80000000) (i32.const -1)) (i32.const 0))
   284(assert_return (invoke "eq" (i32.const -1) (i32.const 0x80000000)) (i32.const 0))
   285(assert_return (invoke "eq" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 0))
   286(assert_return (invoke "eq" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 0))
   287
   288(assert_return (invoke "ne" (i32.const 0) (i32.const 0)) (i32.const 0))
   289(assert_return (invoke "ne" (i32.const 1) (i32.const 1)) (i32.const 0))
   290(assert_return (invoke "ne" (i32.const -1) (i32.const 1)) (i32.const 1))
   291(assert_return (invoke "ne" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 0))
   292(assert_return (invoke "ne" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 0))
   293(assert_return (invoke "ne" (i32.const -1) (i32.const -1)) (i32.const 0))
   294(assert_return (invoke "ne" (i32.const 1) (i32.const 0)) (i32.const 1))
   295(assert_return (invoke "ne" (i32.const 0) (i32.const 1)) (i32.const 1))
   296(assert_return (invoke "ne" (i32.const 0x80000000) (i32.const 0)) (i32.const 1))
   297(assert_return (invoke "ne" (i32.const 0) (i32.const 0x80000000)) (i32.const 1))
   298(assert_return (invoke "ne" (i32.const 0x80000000) (i32.const -1)) (i32.const 1))
   299(assert_return (invoke "ne" (i32.const -1) (i32.const 0x80000000)) (i32.const 1))
   300(assert_return (invoke "ne" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 1))
   301(assert_return (invoke "ne" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 1))
   302
   303(assert_return (invoke "lt_s" (i32.const 0) (i32.const 0)) (i32.const 0))
   304(assert_return (invoke "lt_s" (i32.const 1) (i32.const 1)) (i32.const 0))
   305(assert_return (invoke "lt_s" (i32.const -1) (i32.const 1)) (i32.const 1))
   306(assert_return (invoke "lt_s" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 0))
   307(assert_return (invoke "lt_s" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 0))
   308(assert_return (invoke "lt_s" (i32.const -1) (i32.const -1)) (i32.const 0))
   309(assert_return (invoke "lt_s" (i32.const 1) (i32.const 0)) (i32.const 0))
   310(assert_return (invoke "lt_s" (i32.const 0) (i32.const 1)) (i32.const 1))
   311(assert_return (invoke "lt_s" (i32.const 0x80000000) (i32.const 0)) (i32.const 1))
   312(assert_return (invoke "lt_s" (i32.const 0) (i32.const 0x80000000)) (i32.const 0))
   313(assert_return (invoke "lt_s" (i32.const 0x80000000) (i32.const -1)) (i32.const 1))
   314(assert_return (invoke "lt_s" (i32.const -1) (i32.const 0x80000000)) (i32.const 0))
   315(assert_return (invoke "lt_s" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 1))
   316(assert_return (invoke "lt_s" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 0))
   317
   318(assert_return (invoke "lt_u" (i32.const 0) (i32.const 0)) (i32.const 0))
   319(assert_return (invoke "lt_u" (i32.const 1) (i32.const 1)) (i32.const 0))
   320(assert_return (invoke "lt_u" (i32.const -1) (i32.const 1)) (i32.const 0))
   321(assert_return (invoke "lt_u" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 0))
   322(assert_return (invoke "lt_u" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 0))
   323(assert_return (invoke "lt_u" (i32.const -1) (i32.const -1)) (i32.const 0))
   324(assert_return (invoke "lt_u" (i32.const 1) (i32.const 0)) (i32.const 0))
   325(assert_return (invoke "lt_u" (i32.const 0) (i32.const 1)) (i32.const 1))
   326(assert_return (invoke "lt_u" (i32.const 0x80000000) (i32.const 0)) (i32.const 0))
   327(assert_return (invoke "lt_u" (i32.const 0) (i32.const 0x80000000)) (i32.const 1))
   328(assert_return (invoke "lt_u" (i32.const 0x80000000) (i32.const -1)) (i32.const 1))
   329(assert_return (invoke "lt_u" (i32.const -1) (i32.const 0x80000000)) (i32.const 0))
   330(assert_return (invoke "lt_u" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 0))
   331(assert_return (invoke "lt_u" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 1))
   332
   333(assert_return (invoke "le_s" (i32.const 0) (i32.const 0)) (i32.const 1))
   334(assert_return (invoke "le_s" (i32.const 1) (i32.const 1)) (i32.const 1))
   335(assert_return (invoke "le_s" (i32.const -1) (i32.const 1)) (i32.const 1))
   336(assert_return (invoke "le_s" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 1))
   337(assert_return (invoke "le_s" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 1))
   338(assert_return (invoke "le_s" (i32.const -1) (i32.const -1)) (i32.const 1))
   339(assert_return (invoke "le_s" (i32.const 1) (i32.const 0)) (i32.const 0))
   340(assert_return (invoke "le_s" (i32.const 0) (i32.const 1)) (i32.const 1))
   341(assert_return (invoke "le_s" (i32.const 0x80000000) (i32.const 0)) (i32.const 1))
   342(assert_return (invoke "le_s" (i32.const 0) (i32.const 0x80000000)) (i32.const 0))
   343(assert_return (invoke "le_s" (i32.const 0x80000000) (i32.const -1)) (i32.const 1))
   344(assert_return (invoke "le_s" (i32.const -1) (i32.const 0x80000000)) (i32.const 0))
   345(assert_return (invoke "le_s" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 1))
   346(assert_return (invoke "le_s" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 0))
   347
   348(assert_return (invoke "le_u" (i32.const 0) (i32.const 0)) (i32.const 1))
   349(assert_return (invoke "le_u" (i32.const 1) (i32.const 1)) (i32.const 1))
   350(assert_return (invoke "le_u" (i32.const -1) (i32.const 1)) (i32.const 0))
   351(assert_return (invoke "le_u" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 1))
   352(assert_return (invoke "le_u" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 1))
   353(assert_return (invoke "le_u" (i32.const -1) (i32.const -1)) (i32.const 1))
   354(assert_return (invoke "le_u" (i32.const 1) (i32.const 0)) (i32.const 0))
   355(assert_return (invoke "le_u" (i32.const 0) (i32.const 1)) (i32.const 1))
   356(assert_return (invoke "le_u" (i32.const 0x80000000) (i32.const 0)) (i32.const 0))
   357(assert_return (invoke "le_u" (i32.const 0) (i32.const 0x80000000)) (i32.const 1))
   358(assert_return (invoke "le_u" (i32.const 0x80000000) (i32.const -1)) (i32.const 1))
   359(assert_return (invoke "le_u" (i32.const -1) (i32.const 0x80000000)) (i32.const 0))
   360(assert_return (invoke "le_u" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 0))
   361(assert_return (invoke "le_u" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 1))
   362
   363(assert_return (invoke "gt_s" (i32.const 0) (i32.const 0)) (i32.const 0))
   364(assert_return (invoke "gt_s" (i32.const 1) (i32.const 1)) (i32.const 0))
   365(assert_return (invoke "gt_s" (i32.const -1) (i32.const 1)) (i32.const 0))
   366(assert_return (invoke "gt_s" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 0))
   367(assert_return (invoke "gt_s" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 0))
   368(assert_return (invoke "gt_s" (i32.const -1) (i32.const -1)) (i32.const 0))
   369(assert_return (invoke "gt_s" (i32.const 1) (i32.const 0)) (i32.const 1))
   370(assert_return (invoke "gt_s" (i32.const 0) (i32.const 1)) (i32.const 0))
   371(assert_return (invoke "gt_s" (i32.const 0x80000000) (i32.const 0)) (i32.const 0))
   372(assert_return (invoke "gt_s" (i32.const 0) (i32.const 0x80000000)) (i32.const 1))
   373(assert_return (invoke "gt_s" (i32.const 0x80000000) (i32.const -1)) (i32.const 0))
   374(assert_return (invoke "gt_s" (i32.const -1) (i32.const 0x80000000)) (i32.const 1))
   375(assert_return (invoke "gt_s" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 0))
   376(assert_return (invoke "gt_s" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 1))
   377
   378(assert_return (invoke "gt_u" (i32.const 0) (i32.const 0)) (i32.const 0))
   379(assert_return (invoke "gt_u" (i32.const 1) (i32.const 1)) (i32.const 0))
   380(assert_return (invoke "gt_u" (i32.const -1) (i32.const 1)) (i32.const 1))
   381(assert_return (invoke "gt_u" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 0))
   382(assert_return (invoke "gt_u" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 0))
   383(assert_return (invoke "gt_u" (i32.const -1) (i32.const -1)) (i32.const 0))
   384(assert_return (invoke "gt_u" (i32.const 1) (i32.const 0)) (i32.const 1))
   385(assert_return (invoke "gt_u" (i32.const 0) (i32.const 1)) (i32.const 0))
   386(assert_return (invoke "gt_u" (i32.const 0x80000000) (i32.const 0)) (i32.const 1))
   387(assert_return (invoke "gt_u" (i32.const 0) (i32.const 0x80000000)) (i32.const 0))
   388(assert_return (invoke "gt_u" (i32.const 0x80000000) (i32.const -1)) (i32.const 0))
   389(assert_return (invoke "gt_u" (i32.const -1) (i32.const 0x80000000)) (i32.const 1))
   390(assert_return (invoke "gt_u" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 1))
   391(assert_return (invoke "gt_u" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 0))
   392
   393(assert_return (invoke "ge_s" (i32.const 0) (i32.const 0)) (i32.const 1))
   394(assert_return (invoke "ge_s" (i32.const 1) (i32.const 1)) (i32.const 1))
   395(assert_return (invoke "ge_s" (i32.const -1) (i32.const 1)) (i32.const 0))
   396(assert_return (invoke "ge_s" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 1))
   397(assert_return (invoke "ge_s" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 1))
   398(assert_return (invoke "ge_s" (i32.const -1) (i32.const -1)) (i32.const 1))
   399(assert_return (invoke "ge_s" (i32.const 1) (i32.const 0)) (i32.const 1))
   400(assert_return (invoke "ge_s" (i32.const 0) (i32.const 1)) (i32.const 0))
   401(assert_return (invoke "ge_s" (i32.const 0x80000000) (i32.const 0)) (i32.const 0))
   402(assert_return (invoke "ge_s" (i32.const 0) (i32.const 0x80000000)) (i32.const 1))
   403(assert_return (invoke "ge_s" (i32.const 0x80000000) (i32.const -1)) (i32.const 0))
   404(assert_return (invoke "ge_s" (i32.const -1) (i32.const 0x80000000)) (i32.const 1))
   405(assert_return (invoke "ge_s" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 0))
   406(assert_return (invoke "ge_s" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 1))
   407
   408(assert_return (invoke "ge_u" (i32.const 0) (i32.const 0)) (i32.const 1))
   409(assert_return (invoke "ge_u" (i32.const 1) (i32.const 1)) (i32.const 1))
   410(assert_return (invoke "ge_u" (i32.const -1) (i32.const 1)) (i32.const 1))
   411(assert_return (invoke "ge_u" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 1))
   412(assert_return (invoke "ge_u" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 1))
   413(assert_return (invoke "ge_u" (i32.const -1) (i32.const -1)) (i32.const 1))
   414(assert_return (invoke "ge_u" (i32.const 1) (i32.const 0)) (i32.const 1))
   415(assert_return (invoke "ge_u" (i32.const 0) (i32.const 1)) (i32.const 0))
   416(assert_return (invoke "ge_u" (i32.const 0x80000000) (i32.const 0)) (i32.const 1))
   417(assert_return (invoke "ge_u" (i32.const 0) (i32.const 0x80000000)) (i32.const 0))
   418(assert_return (invoke "ge_u" (i32.const 0x80000000) (i32.const -1)) (i32.const 0))
   419(assert_return (invoke "ge_u" (i32.const -1) (i32.const 0x80000000)) (i32.const 1))
   420(assert_return (invoke "ge_u" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 1))
   421(assert_return (invoke "ge_u" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 0))
   422
   423
   424(assert_invalid
   425  (module
   426    (func $type-unary-operand-empty
   427      (i32.eqz) (drop)
   428    )
   429  )
   430  "type mismatch"
   431)
   432(assert_invalid
   433  (module
   434    (func $type-unary-operand-empty-in-block
   435      (i32.const 0)
   436      (block (i32.eqz) (drop))
   437    )
   438  )
   439  "type mismatch"
   440)
   441(assert_invalid
   442  (module
   443    (func $type-unary-operand-empty-in-loop
   444      (i32.const 0)
   445      (loop (i32.eqz) (drop))
   446    )
   447  )
   448  "type mismatch"
   449)
   450(assert_invalid
   451  (module
   452    (func $type-unary-operand-empty-in-if
   453      (i32.const 0) (i32.const 0)
   454      (if (then (i32.eqz) (drop)))
   455    )
   456  )
   457  "type mismatch"
   458)
   459(assert_invalid
   460  (module
   461    (func $type-unary-operand-empty-in-else
   462      (i32.const 0) (i32.const 0)
   463      (if (result i32) (then (i32.const 0)) (else (i32.eqz))) (drop)
   464    )
   465  )
   466  "type mismatch"
   467)
   468(assert_invalid
   469  (module
   470    (func $type-unary-operand-empty-in-br
   471      (i32.const 0)
   472      (block (br 0 (i32.eqz)) (drop))
   473    )
   474  )
   475  "type mismatch"
   476)
   477(assert_invalid
   478  (module
   479    (func $type-unary-operand-empty-in-br_if
   480      (i32.const 0)
   481      (block (br_if 0 (i32.eqz) (i32.const 1)) (drop))
   482    )
   483  )
   484  "type mismatch"
   485)
   486(assert_invalid
   487  (module
   488    (func $type-unary-operand-empty-in-br_table
   489      (i32.const 0)
   490      (block (br_table 0 (i32.eqz)) (drop))
   491    )
   492  )
   493  "type mismatch"
   494)
   495(assert_invalid
   496  (module
   497    (func $type-unary-operand-empty-in-return
   498      (return (i32.eqz)) (drop)
   499    )
   500  )
   501  "type mismatch"
   502)
   503(assert_invalid
   504  (module
   505    (func $type-unary-operand-empty-in-select
   506      (select (i32.eqz) (i32.const 1) (i32.const 2)) (drop)
   507    )
   508  )
   509  "type mismatch"
   510)
   511(assert_invalid
   512  (module
   513    (func $type-unary-operand-empty-in-call
   514      (call 1 (i32.eqz)) (drop)
   515    )
   516    (func (param i32) (result i32) (local.get 0))
   517  )
   518  "type mismatch"
   519)
   520(assert_invalid
   521  (module
   522    (func $f (param i32) (result i32) (local.get 0))
   523    (type $sig (func (param i32) (result i32)))
   524    (table funcref (elem $f))
   525    (func $type-unary-operand-empty-in-call_indirect
   526      (block (result i32)
   527        (call_indirect (type $sig)
   528          (i32.eqz) (i32.const 0)
   529        )
   530        (drop)
   531      )
   532    )
   533  )
   534  "type mismatch"
   535)
   536(assert_invalid
   537  (module
   538    (func $type-unary-operand-empty-in-local.set
   539      (local i32)
   540      (local.set 0 (i32.eqz)) (local.get 0) (drop)
   541    )
   542  )
   543  "type mismatch"
   544)
   545(assert_invalid
   546  (module
   547    (func $type-unary-operand-empty-in-local.tee
   548      (local i32)
   549      (local.tee 0 (i32.eqz)) (drop)
   550    )
   551  )
   552  "type mismatch"
   553)
   554(assert_invalid
   555  (module
   556    (global $x (mut i32) (i32.const 0))
   557    (func $type-unary-operand-empty-in-global.set
   558      (global.set $x (i32.eqz)) (global.get $x) (drop)
   559    )
   560  )
   561  "type mismatch"
   562)
   563(assert_invalid
   564  (module
   565    (memory 0)
   566    (func $type-unary-operand-empty-in-memory.grow
   567      (memory.grow (i32.eqz)) (drop)
   568    )
   569  )
   570  "type mismatch"
   571)
   572(assert_invalid
   573  (module
   574    (memory 0)
   575    (func $type-unary-operand-empty-in-load
   576      (i32.load (i32.eqz)) (drop)
   577    )
   578  )
   579  "type mismatch"
   580)
   581(assert_invalid
   582  (module
   583    (memory 1)
   584    (func $type-unary-operand-empty-in-store
   585      (i32.store (i32.eqz) (i32.const 1))
   586    )
   587  )
   588  "type mismatch"
   589)
   590
   591(assert_invalid
   592  (module
   593    (func $type-binary-1st-operand-empty
   594      (i32.add) (drop)
   595    )
   596  )
   597  "type mismatch"
   598)
   599(assert_invalid
   600  (module
   601    (func $type-binary-2nd-operand-empty
   602      (i32.const 0) (i32.add) (drop)
   603    )
   604  )
   605  "type mismatch"
   606)
   607(assert_invalid
   608  (module
   609    (func $type-binary-1st-operand-empty-in-block
   610      (i32.const 0) (i32.const 0)
   611      (block (i32.add) (drop))
   612    )
   613  )
   614  "type mismatch"
   615)
   616(assert_invalid
   617  (module
   618    (func $type-binary-2nd-operand-empty-in-block
   619      (i32.const 0)
   620      (block (i32.const 0) (i32.add) (drop))
   621    )
   622  )
   623  "type mismatch"
   624)
   625(assert_invalid
   626  (module
   627    (func $type-binary-1st-operand-empty-in-loop
   628      (i32.const 0) (i32.const 0)
   629      (loop (i32.add) (drop))
   630    )
   631  )
   632  "type mismatch"
   633)
   634(assert_invalid
   635  (module
   636    (func $type-binary-2nd-operand-empty-in-loop
   637      (i32.const 0)
   638      (loop (i32.const 0) (i32.add) (drop))
   639    )
   640  )
   641  "type mismatch"
   642)
   643(assert_invalid
   644  (module
   645    (func $type-binary-1st-operand-empty-in-if
   646      (i32.const 0) (i32.const 0) (i32.const 0)
   647      (if (i32.add) (then (drop)))
   648    )
   649  )
   650  "type mismatch"
   651)
   652(assert_invalid
   653  (module
   654    (func $type-binary-2nd-operand-empty-in-if
   655      (i32.const 0) (i32.const 0)
   656      (if (i32.const 0) (then (i32.add)) (else (drop)))
   657    )
   658  )
   659  "type mismatch"
   660)
   661(assert_invalid
   662  (module
   663    (func $type-binary-1st-operand-empty-in-else
   664      (i32.const 0) (i32.const 0) (i32.const 0)
   665      (if (result i32) (then (i32.const 0)) (else (i32.add) (i32.const 0)))
   666      (drop) (drop)
   667    )
   668  )
   669  "type mismatch"
   670)
   671(assert_invalid
   672  (module
   673    (func $type-binary-2nd-operand-empty-in-else
   674      (i32.const 0) (i32.const 0)
   675      (if (result i32) (then (i32.const 0)) (else (i32.add)))
   676      (drop)
   677    )
   678  )
   679  "type mismatch"
   680)
   681(assert_invalid
   682  (module
   683    (func $type-binary-1st-operand-empty-in-br
   684      (i32.const 0) (i32.const 0)
   685      (block (br 0 (i32.add)) (drop))
   686    )
   687  )
   688  "type mismatch"
   689)
   690(assert_invalid
   691  (module
   692    (func $type-binary-2nd-operand-empty-in-br
   693      (i32.const 0)
   694      (block (br 0 (i32.const 0) (i32.add)) (drop))
   695    )
   696  )
   697  "type mismatch"
   698)
   699(assert_invalid
   700  (module
   701    (func $type-binary-1st-operand-empty-in-br_if
   702      (i32.const 0) (i32.const 0)
   703      (block (br_if 0 (i32.add) (i32.const 1)) (drop))
   704    )
   705  )
   706  "type mismatch"
   707)
   708(assert_invalid
   709  (module
   710    (func $type-binary-2nd-operand-empty-in-br_if
   711      (i32.const 0)
   712      (block (br_if 0 (i32.const 0) (i32.add) (i32.const 1)) (drop))
   713    )
   714  )
   715  "type mismatch"
   716)
   717(assert_invalid
   718  (module
   719    (func $type-binary-1st-operand-empty-in-br_table
   720      (i32.const 0) (i32.const 0)
   721      (block (br_table 0 (i32.add)) (drop))
   722    )
   723  )
   724  "type mismatch"
   725)
   726(assert_invalid
   727  (module
   728    (func $type-binary-2nd-operand-empty-in-br_table
   729      (i32.const 0)
   730      (block (br_table 0 (i32.const 0) (i32.add)) (drop))
   731    )
   732  )
   733  "type mismatch"
   734)
   735(assert_invalid
   736  (module
   737    (func $type-binary-1st-operand-empty-in-return
   738      (return (i32.add)) (drop)
   739    )
   740  )
   741  "type mismatch"
   742)
   743(assert_invalid
   744  (module
   745    (func $type-binary-2nd-operand-empty-in-return
   746      (return (i32.const 0) (i32.add)) (drop)
   747    )
   748  )
   749  "type mismatch"
   750)
   751(assert_invalid
   752  (module
   753    (func $type-binary-1st-operand-empty-in-select
   754      (select (i32.add) (i32.const 1) (i32.const 2)) (drop)
   755    )
   756  )
   757  "type mismatch"
   758)
   759(assert_invalid
   760  (module
   761    (func $type-binary-2nd-operand-empty-in-select
   762      (select (i32.const 0) (i32.add) (i32.const 1) (i32.const 2)) (drop)
   763    )
   764  )
   765  "type mismatch"
   766)
   767(assert_invalid
   768  (module
   769    (func $type-binary-1st-operand-empty-in-call
   770      (call 1 (i32.add)) (drop)
   771    )
   772    (func (param i32 i32) (result i32) (local.get 0))
   773  )
   774  "type mismatch"
   775)
   776(assert_invalid
   777  (module
   778    (func $type-binary-2nd-operand-empty-in-call
   779      (call 1 (i32.const 0) (i32.add)) (drop)
   780    )
   781    (func (param i32 i32) (result i32) (local.get 0))
   782  )
   783  "type mismatch"
   784)
   785(assert_invalid
   786  (module
   787    (func $f (param i32) (result i32) (local.get 0))
   788    (type $sig (func (param i32) (result i32)))
   789    (table funcref (elem $f))
   790    (func $type-binary-1st-operand-empty-in-call_indirect
   791      (block (result i32)
   792        (call_indirect (type $sig)
   793          (i32.add) (i32.const 0)
   794        )
   795        (drop)
   796      )
   797    )
   798  )
   799  "type mismatch"
   800)
   801(assert_invalid
   802  (module
   803    (func $f (param i32) (result i32) (local.get 0))
   804    (type $sig (func (param i32) (result i32)))
   805    (table funcref (elem $f))
   806    (func $type-binary-2nd-operand-empty-in-call_indirect
   807      (block (result i32)
   808        (call_indirect (type $sig)
   809          (i32.const 0) (i32.add) (i32.const 0)
   810        )
   811        (drop)
   812      )
   813    )
   814  )
   815  "type mismatch"
   816)
   817(assert_invalid
   818  (module
   819    (func $type-binary-1st-operand-empty-in-local.set
   820      (local i32)
   821      (local.set 0 (i32.add)) (local.get 0) (drop)
   822    )
   823  )
   824  "type mismatch"
   825)
   826(assert_invalid
   827  (module
   828    (func $type-binary-2nd-operand-empty-in-local.set
   829      (local i32)
   830      (local.set 0 (i32.const 0) (i32.add)) (local.get 0) (drop)
   831    )
   832  )
   833  "type mismatch"
   834)
   835(assert_invalid
   836  (module
   837    (func $type-binary-1st-operand-empty-in-local.tee
   838      (local i32)
   839      (local.tee 0 (i32.add)) (drop)
   840    )
   841  )
   842  "type mismatch"
   843)
   844(assert_invalid
   845  (module
   846    (func $type-binary-2nd-operand-empty-in-local.tee
   847      (local i32)
   848      (local.tee 0 (i32.const 0) (i32.add)) (drop)
   849    )
   850  )
   851  "type mismatch"
   852)
   853(assert_invalid
   854  (module
   855    (global $x (mut i32) (i32.const 0))
   856    (func $type-binary-1st-operand-empty-in-global.set
   857      (global.set $x (i32.add)) (global.get $x) (drop)
   858    )
   859  )
   860  "type mismatch"
   861)
   862(assert_invalid
   863  (module
   864    (global $x (mut i32) (i32.const 0))
   865    (func $type-binary-2nd-operand-empty-in-global.set
   866      (global.set $x (i32.const 0) (i32.add)) (global.get $x) (drop)
   867    )
   868  )
   869  "type mismatch"
   870)
   871(assert_invalid
   872  (module
   873    (memory 0)
   874    (func $type-binary-1st-operand-empty-in-memory.grow
   875      (memory.grow (i32.add)) (drop)
   876    )
   877  )
   878  "type mismatch"
   879)
   880(assert_invalid
   881  (module
   882    (memory 0)
   883    (func $type-binary-2nd-operand-empty-in-memory.grow
   884      (memory.grow (i32.const 0) (i32.add)) (drop)
   885    )
   886  )
   887  "type mismatch"
   888)
   889(assert_invalid
   890  (module
   891    (memory 0)
   892    (func $type-binary-1st-operand-empty-in-load
   893      (i32.load (i32.add)) (drop)
   894    )
   895  )
   896  "type mismatch"
   897)
   898(assert_invalid
   899  (module
   900    (memory 0)
   901    (func $type-binary-2nd-operand-empty-in-load
   902      (i32.load (i32.const 0) (i32.add)) (drop)
   903    )
   904  )
   905  "type mismatch"
   906)
   907(assert_invalid
   908  (module
   909    (memory 1)
   910    (func $type-binary-1st-operand-empty-in-store
   911      (i32.store (i32.add) (i32.const 1))
   912    )
   913  )
   914  "type mismatch"
   915)
   916(assert_invalid
   917  (module
   918    (memory 1)
   919    (func $type-binary-2nd-operand-empty-in-store
   920      (i32.store (i32.const 1) (i32.add) (i32.const 0))
   921    )
   922  )
   923  "type mismatch"
   924)
   925
   926
   927;; Type check
   928
   929(assert_invalid (module (func (result i32) (i32.add (i64.const 0) (f32.const 0)))) "type mismatch")
   930(assert_invalid (module (func (result i32) (i32.and (i64.const 0) (f32.const 0)))) "type mismatch")
   931(assert_invalid (module (func (result i32) (i32.div_s (i64.const 0) (f32.const 0)))) "type mismatch")
   932(assert_invalid (module (func (result i32) (i32.div_u (i64.const 0) (f32.const 0)))) "type mismatch")
   933(assert_invalid (module (func (result i32) (i32.mul (i64.const 0) (f32.const 0)))) "type mismatch")
   934(assert_invalid (module (func (result i32) (i32.or (i64.const 0) (f32.const 0)))) "type mismatch")
   935(assert_invalid (module (func (result i32) (i32.rem_s (i64.const 0) (f32.const 0)))) "type mismatch")
   936(assert_invalid (module (func (result i32) (i32.rem_u (i64.const 0) (f32.const 0)))) "type mismatch")
   937(assert_invalid (module (func (result i32) (i32.rotl (i64.const 0) (f32.const 0)))) "type mismatch")
   938(assert_invalid (module (func (result i32) (i32.rotr (i64.const 0) (f32.const 0)))) "type mismatch")
   939(assert_invalid (module (func (result i32) (i32.shl (i64.const 0) (f32.const 0)))) "type mismatch")
   940(assert_invalid (module (func (result i32) (i32.shr_s (i64.const 0) (f32.const 0)))) "type mismatch")
   941(assert_invalid (module (func (result i32) (i32.shr_u (i64.const 0) (f32.const 0)))) "type mismatch")
   942(assert_invalid (module (func (result i32) (i32.sub (i64.const 0) (f32.const 0)))) "type mismatch")
   943(assert_invalid (module (func (result i32) (i32.xor (i64.const 0) (f32.const 0)))) "type mismatch")
   944(assert_invalid (module (func (result i32) (i32.eqz (i64.const 0)))) "type mismatch")
   945(assert_invalid (module (func (result i32) (i32.clz (i64.const 0)))) "type mismatch")
   946(assert_invalid (module (func (result i32) (i32.ctz (i64.const 0)))) "type mismatch")
   947(assert_invalid (module (func (result i32) (i32.popcnt (i64.const 0)))) "type mismatch")
   948(assert_invalid (module (func (result i32) (i32.eq (i64.const 0) (f32.const 0)))) "type mismatch")
   949(assert_invalid (module (func (result i32) (i32.ge_s (i64.const 0) (f32.const 0)))) "type mismatch")
   950(assert_invalid (module (func (result i32) (i32.ge_u (i64.const 0) (f32.const 0)))) "type mismatch")
   951(assert_invalid (module (func (result i32) (i32.gt_s (i64.const 0) (f32.const 0)))) "type mismatch")
   952(assert_invalid (module (func (result i32) (i32.gt_u (i64.const 0) (f32.const 0)))) "type mismatch")
   953(assert_invalid (module (func (result i32) (i32.le_s (i64.const 0) (f32.const 0)))) "type mismatch")
   954(assert_invalid (module (func (result i32) (i32.le_u (i64.const 0) (f32.const 0)))) "type mismatch")
   955(assert_invalid (module (func (result i32) (i32.lt_s (i64.const 0) (f32.const 0)))) "type mismatch")
   956(assert_invalid (module (func (result i32) (i32.lt_u (i64.const 0) (f32.const 0)))) "type mismatch")
   957(assert_invalid (module (func (result i32) (i32.ne (i64.const 0) (f32.const 0)))) "type mismatch")

View as plain text