diff options
| author | Henry <mail@henrygressmann.de> | 2023-12-25 14:55:06 +0100 |
|---|---|---|
| committer | Henry <mail@henrygressmann.de> | 2023-12-25 14:55:06 +0100 |
| commit | ba30264e5da6f8565cbe09882eea2782f3f1412f (patch) | |
| tree | 3d372f2732b08953f1e3cb0dc5bcfc491676dfb7 | |
| parent | d20e7889d608522e6fd57ed9691f78c53b02e3e7 (diff) | |
feat: bit operations
Signed-off-by: Henry <mail@henrygressmann.de>
| -rw-r--r-- | crates/tinywasm/src/runtime/executor/mod.rs | 21 | ||||
| -rw-r--r-- | crates/tinywasm/src/runtime/executor/traits.rs | 45 | ||||
| -rw-r--r-- | crates/tinywasm/tests/generated/mvp.csv | 2 | ||||
| -rw-r--r-- | examples/wast/i32.wast | 1512 |
4 files changed, 819 insertions, 761 deletions
diff --git a/crates/tinywasm/src/runtime/executor/mod.rs b/crates/tinywasm/src/runtime/executor/mod.rs index 07cad44..4a9eee1 100644 --- a/crates/tinywasm/src/runtime/executor/mod.rs +++ b/crates/tinywasm/src/runtime/executor/mod.rs @@ -1,3 +1,5 @@ +use core::ops::{BitAnd, BitOr, BitXor}; + use super::{DefaultRuntime, Stack}; use crate::{ get_label_args, @@ -10,7 +12,9 @@ use log::info; use tinywasm_types::Instruction; mod macros; +mod traits; use macros::*; +use traits::*; impl DefaultRuntime { pub(crate) fn exec(&self, store: &mut Store, stack: &mut Stack, module: ModuleInstance) -> Result<()> { @@ -311,10 +315,19 @@ fn exec_one( I32DivU => checked_arithmetic_method_cast!(checked_div, i32, u32, stack, crate::Trap::DivisionByZero), I64DivU => checked_arithmetic_method_cast!(checked_div, i64, u64, stack, crate::Trap::DivisionByZero), - I32RemS => checked_arithmetic_method!(checked_rem, i32, stack, crate::Trap::DivisionByZero), - I64RemS => checked_arithmetic_method!(checked_rem, i64, stack, crate::Trap::DivisionByZero), - I32RemU => checked_arithmetic_method_cast!(checked_rem, i32, u32, stack, crate::Trap::DivisionByZero), - I64RemU => checked_arithmetic_method_cast!(checked_rem, i64, u64, stack, crate::Trap::DivisionByZero), + I32RemS => checked_arithmetic_method!(checked_wrapping_rem, i32, stack, crate::Trap::DivisionByZero), + I64RemS => checked_arithmetic_method!(checked_wrapping_rem, i64, stack, crate::Trap::DivisionByZero), + I32RemU => checked_arithmetic_method_cast!(checked_wrapping_rem, i32, u32, stack, crate::Trap::DivisionByZero), + I64RemU => checked_arithmetic_method_cast!(checked_wrapping_rem, i64, u64, stack, crate::Trap::DivisionByZero), + + I32And => arithmetic_method!(bitand, i32, stack), + I64And => arithmetic_method!(bitand, i64, stack), + I32Or => arithmetic_method!(bitor, i32, stack), + I64Or => arithmetic_method!(bitor, i64, stack), + I32Xor => arithmetic_method!(bitxor, i32, stack), + I64Xor => arithmetic_method!(bitxor, i64, stack), + I32Shl => arithmetic_method!(shl_i32, i32, stack), + I64Shl => arithmetic_method!(shl_i64, i64, stack), F32ConvertI32S => conv_1!(i32, f32, stack), F32ConvertI64S => conv_1!(i64, f32, stack), diff --git a/crates/tinywasm/src/runtime/executor/traits.rs b/crates/tinywasm/src/runtime/executor/traits.rs new file mode 100644 index 0000000..0c786b8 --- /dev/null +++ b/crates/tinywasm/src/runtime/executor/traits.rs @@ -0,0 +1,45 @@ +pub(crate) trait CheckedWrappingRem +where + Self: Sized, +{ + fn checked_wrapping_rem(self, rhs: Self) -> Option<Self>; +} + +pub(crate) trait ShlI32 { + fn shl_i32(self, rhs: i32) -> Self; +} + +impl ShlI32 for i32 { + #[inline] + fn shl_i32(self, rhs: i32) -> Self { + self.wrapping_shl(rhs as u32) + } +} + +pub(crate) trait ShlI64 { + fn shl_i64(self, rhs: i64) -> Self; +} + +impl ShlI64 for i64 { + #[inline] + fn shl_i64(self, rhs: i64) -> Self { + self.wrapping_shl(rhs as u32) + } +} + +macro_rules! impl_checked_wrapping_rem { + ($($t:ty)*) => ($( + impl CheckedWrappingRem for $t { + #[inline] + fn checked_wrapping_rem(self, rhs: Self) -> Option<Self> { + if rhs == 0 { + None + } else { + Some(self.wrapping_rem(rhs)) + } + } + } + )*) +} + +impl_checked_wrapping_rem! { i8 i16 i32 i64 i128 isize u8 u16 u32 u64 u128 usize } diff --git a/crates/tinywasm/tests/generated/mvp.csv b/crates/tinywasm/tests/generated/mvp.csv index 7c144af..fc09b20 100644 --- a/crates/tinywasm/tests/generated/mvp.csv +++ b/crates/tinywasm/tests/generated/mvp.csv @@ -1,4 +1,4 @@ 0.0.3,9258,7567,[{"name":"address.wast","passed":0,"failed":54},{"name":"align.wast","passed":0,"failed":109},{"name":"binary-leb128.wast","passed":66,"failed":25},{"name":"binary.wast","passed":104,"failed":8},{"name":"block.wast","passed":0,"failed":171},{"name":"br.wast","passed":0,"failed":21},{"name":"br_if.wast","passed":0,"failed":30},{"name":"br_table.wast","passed":0,"failed":25},{"name":"call.wast","passed":0,"failed":22},{"name":"call_indirect.wast","passed":0,"failed":56},{"name":"comments.wast","passed":4,"failed":4},{"name":"const.wast","passed":702,"failed":76},{"name":"conversions.wast","passed":0,"failed":93},{"name":"custom.wast","passed":10,"failed":1},{"name":"data.wast","passed":0,"failed":61},{"name":"elem.wast","passed":0,"failed":76},{"name":"endianness.wast","passed":0,"failed":1},{"name":"exports.wast","passed":21,"failed":73},{"name":"f32.wast","passed":1005,"failed":1509},{"name":"f32_bitwise.wast","passed":1,"failed":363},{"name":"f32_cmp.wast","passed":2401,"failed":6},{"name":"f64.wast","passed":1005,"failed":1509},{"name":"f64_bitwise.wast","passed":1,"failed":363},{"name":"f64_cmp.wast","passed":2401,"failed":6},{"name":"fac.wast","passed":0,"failed":2},{"name":"float_exprs.wast","passed":269,"failed":591},{"name":"float_literals.wast","passed":34,"failed":129},{"name":"float_memory.wast","passed":0,"failed":6},{"name":"float_misc.wast","passed":138,"failed":303},{"name":"forward.wast","passed":1,"failed":4},{"name":"func.wast","passed":4,"failed":75},{"name":"func_ptrs.wast","passed":0,"failed":16},{"name":"global.wast","passed":4,"failed":49},{"name":"i32.wast","passed":0,"failed":96},{"name":"i64.wast","passed":0,"failed":42},{"name":"if.wast","passed":0,"failed":118},{"name":"imports.wast","passed":1,"failed":156},{"name":"inline-module.wast","passed":0,"failed":1},{"name":"int_exprs.wast","passed":38,"failed":70},{"name":"int_literals.wast","passed":5,"failed":46},{"name":"labels.wast","passed":1,"failed":28},{"name":"left-to-right.wast","passed":0,"failed":1},{"name":"linking.wast","passed":1,"failed":66},{"name":"load.wast","passed":0,"failed":60},{"name":"local_get.wast","passed":2,"failed":34},{"name":"local_set.wast","passed":5,"failed":48},{"name":"local_tee.wast","passed":0,"failed":42},{"name":"loop.wast","passed":0,"failed":43},{"name":"memory.wast","passed":0,"failed":34},{"name":"memory_grow.wast","passed":0,"failed":19},{"name":"memory_redundancy.wast","passed":0,"failed":1},{"name":"memory_size.wast","passed":0,"failed":6},{"name":"memory_trap.wast","passed":0,"failed":172},{"name":"names.wast","passed":484,"failed":1},{"name":"nop.wast","passed":0,"failed":5},{"name":"return.wast","passed":0,"failed":21},{"name":"select.wast","passed":0,"failed":32},{"name":"skip-stack-guard-page.wast","passed":0,"failed":11},{"name":"stack.wast","passed":0,"failed":2},{"name":"start.wast","passed":0,"failed":10},{"name":"store.wast","passed":0,"failed":59},{"name":"switch.wast","passed":1,"failed":27},{"name":"token.wast","passed":16,"failed":42},{"name":"traps.wast","passed":3,"failed":33},{"name":"type.wast","passed":1,"failed":2},{"name":"unreachable.wast","passed":0,"failed":59},{"name":"unreached-invalid.wast","passed":0,"failed":118},{"name":"unwind.wast","passed":1,"failed":49},{"name":"utf8-custom-section-id.wast","passed":176,"failed":0},{"name":"utf8-import-field.wast","passed":176,"failed":0},{"name":"utf8-import-module.wast","passed":176,"failed":0},{"name":"utf8-invalid-encoding.wast","passed":0,"failed":176}] 0.0.4,9258,10909,[{"name":"address.wast","passed":0,"failed":54},{"name":"align.wast","passed":0,"failed":109},{"name":"binary-leb128.wast","passed":66,"failed":25},{"name":"binary.wast","passed":104,"failed":8},{"name":"block.wast","passed":0,"failed":171},{"name":"br.wast","passed":0,"failed":21},{"name":"br_if.wast","passed":0,"failed":30},{"name":"br_table.wast","passed":0,"failed":25},{"name":"call.wast","passed":0,"failed":22},{"name":"call_indirect.wast","passed":0,"failed":56},{"name":"comments.wast","passed":4,"failed":4},{"name":"const.wast","passed":702,"failed":76},{"name":"conversions.wast","passed":0,"failed":93},{"name":"custom.wast","passed":10,"failed":1},{"name":"data.wast","passed":0,"failed":61},{"name":"elem.wast","passed":0,"failed":76},{"name":"endianness.wast","passed":0,"failed":1},{"name":"exports.wast","passed":21,"failed":73},{"name":"f32.wast","passed":1005,"failed":1509},{"name":"f32_bitwise.wast","passed":1,"failed":363},{"name":"f32_cmp.wast","passed":2401,"failed":6},{"name":"f64.wast","passed":1005,"failed":1509},{"name":"f64_bitwise.wast","passed":1,"failed":363},{"name":"f64_cmp.wast","passed":2401,"failed":6},{"name":"fac.wast","passed":0,"failed":2},{"name":"float_exprs.wast","passed":269,"failed":591},{"name":"float_literals.wast","passed":34,"failed":129},{"name":"float_memory.wast","passed":0,"failed":6},{"name":"float_misc.wast","passed":138,"failed":303},{"name":"forward.wast","passed":1,"failed":4},{"name":"func.wast","passed":4,"failed":75},{"name":"func_ptrs.wast","passed":0,"failed":16},{"name":"global.wast","passed":4,"failed":49},{"name":"i32.wast","passed":0,"failed":96},{"name":"i64.wast","passed":0,"failed":42},{"name":"if.wast","passed":0,"failed":118},{"name":"imports.wast","passed":1,"failed":156},{"name":"inline-module.wast","passed":0,"failed":1},{"name":"int_exprs.wast","passed":38,"failed":70},{"name":"int_literals.wast","passed":5,"failed":46},{"name":"labels.wast","passed":1,"failed":28},{"name":"left-to-right.wast","passed":0,"failed":1},{"name":"linking.wast","passed":1,"failed":66},{"name":"load.wast","passed":0,"failed":60},{"name":"local_get.wast","passed":2,"failed":34},{"name":"local_set.wast","passed":5,"failed":48},{"name":"local_tee.wast","passed":0,"failed":42},{"name":"loop.wast","passed":0,"failed":43},{"name":"memory.wast","passed":0,"failed":34},{"name":"memory_grow.wast","passed":0,"failed":19},{"name":"memory_redundancy.wast","passed":0,"failed":1},{"name":"memory_size.wast","passed":0,"failed":6},{"name":"memory_trap.wast","passed":0,"failed":172},{"name":"names.wast","passed":484,"failed":1},{"name":"nop.wast","passed":0,"failed":5},{"name":"return.wast","passed":0,"failed":21},{"name":"select.wast","passed":0,"failed":32},{"name":"skip-stack-guard-page.wast","passed":0,"failed":11},{"name":"stack.wast","passed":0,"failed":2},{"name":"start.wast","passed":0,"failed":10},{"name":"store.wast","passed":0,"failed":59},{"name":"switch.wast","passed":1,"failed":27},{"name":"token.wast","passed":16,"failed":42},{"name":"traps.wast","passed":3,"failed":33},{"name":"type.wast","passed":1,"failed":2},{"name":"unreachable.wast","passed":0,"failed":59},{"name":"unreached-invalid.wast","passed":0,"failed":118},{"name":"unwind.wast","passed":1,"failed":49},{"name":"utf8-custom-section-id.wast","passed":176,"failed":0},{"name":"utf8-import-field.wast","passed":176,"failed":0},{"name":"utf8-import-module.wast","passed":176,"failed":0},{"name":"utf8-invalid-encoding.wast","passed":0,"failed":176}] 0.0.5,11135,9093,[{"name":"address.wast","passed":1,"failed":259},{"name":"align.wast","passed":108,"failed":48},{"name":"binary-leb128.wast","passed":78,"failed":13},{"name":"binary.wast","passed":107,"failed":5},{"name":"block.wast","passed":170,"failed":53},{"name":"br.wast","passed":20,"failed":77},{"name":"br_if.wast","passed":29,"failed":89},{"name":"br_table.wast","passed":24,"failed":150},{"name":"call.wast","passed":18,"failed":73},{"name":"call_indirect.wast","passed":34,"failed":136},{"name":"comments.wast","passed":5,"failed":3},{"name":"const.wast","passed":778,"failed":0},{"name":"conversions.wast","passed":25,"failed":594},{"name":"custom.wast","passed":10,"failed":1},{"name":"data.wast","passed":22,"failed":39},{"name":"elem.wast","passed":27,"failed":72},{"name":"endianness.wast","passed":1,"failed":68},{"name":"exports.wast","passed":90,"failed":6},{"name":"f32.wast","passed":1018,"failed":1496},{"name":"f32_bitwise.wast","passed":4,"failed":360},{"name":"f32_cmp.wast","passed":2407,"failed":0},{"name":"f64.wast","passed":1018,"failed":1496},{"name":"f64_bitwise.wast","passed":4,"failed":360},{"name":"f64_cmp.wast","passed":2407,"failed":0},{"name":"fac.wast","passed":1,"failed":7},{"name":"float_exprs.wast","passed":275,"failed":625},{"name":"float_literals.wast","passed":112,"failed":51},{"name":"float_memory.wast","passed":0,"failed":90},{"name":"float_misc.wast","passed":138,"failed":303},{"name":"forward.wast","passed":1,"failed":4},{"name":"func.wast","passed":81,"failed":91},{"name":"func_ptrs.wast","passed":7,"failed":29},{"name":"global.wast","passed":50,"failed":60},{"name":"i32.wast","passed":85,"failed":375},{"name":"i64.wast","passed":31,"failed":385},{"name":"if.wast","passed":116,"failed":125},{"name":"imports.wast","passed":23,"failed":160},{"name":"inline-module.wast","passed":1,"failed":0},{"name":"int_exprs.wast","passed":38,"failed":70},{"name":"int_literals.wast","passed":25,"failed":26},{"name":"labels.wast","passed":13,"failed":16},{"name":"left-to-right.wast","passed":0,"failed":96},{"name":"linking.wast","passed":5,"failed":127},{"name":"load.wast","passed":59,"failed":38},{"name":"local_get.wast","passed":18,"failed":18},{"name":"local_set.wast","passed":38,"failed":15},{"name":"local_tee.wast","passed":41,"failed":56},{"name":"loop.wast","passed":42,"failed":78},{"name":"memory.wast","passed":30,"failed":49},{"name":"memory_grow.wast","passed":11,"failed":85},{"name":"memory_redundancy.wast","passed":1,"failed":7},{"name":"memory_size.wast","passed":6,"failed":36},{"name":"memory_trap.wast","passed":1,"failed":181},{"name":"names.wast","passed":484,"failed":2},{"name":"nop.wast","passed":4,"failed":84},{"name":"return.wast","passed":20,"failed":64},{"name":"select.wast","passed":28,"failed":120},{"name":"skip-stack-guard-page.wast","passed":1,"failed":10},{"name":"stack.wast","passed":2,"failed":5},{"name":"start.wast","passed":4,"failed":16},{"name":"store.wast","passed":59,"failed":9},{"name":"switch.wast","passed":2,"failed":26},{"name":"token.wast","passed":39,"failed":19},{"name":"traps.wast","passed":4,"failed":32},{"name":"type.wast","passed":3,"failed":0},{"name":"unreachable.wast","passed":0,"failed":64},{"name":"unreached-invalid.wast","passed":118,"failed":0},{"name":"unwind.wast","passed":9,"failed":41},{"name":"utf8-custom-section-id.wast","passed":176,"failed":0},{"name":"utf8-import-field.wast","passed":176,"failed":0},{"name":"utf8-import-module.wast","passed":176,"failed":0},{"name":"utf8-invalid-encoding.wast","passed":176,"failed":0}] -0.0.6-alpha.0,12682,7546,[{"name":"address.wast","passed":5,"failed":255},{"name":"align.wast","passed":108,"failed":48},{"name":"binary-leb128.wast","passed":90,"failed":1},{"name":"binary.wast","passed":110,"failed":2},{"name":"block.wast","passed":192,"failed":31},{"name":"br.wast","passed":84,"failed":13},{"name":"br_if.wast","passed":86,"failed":32},{"name":"br_table.wast","passed":25,"failed":149},{"name":"call.wast","passed":29,"failed":62},{"name":"call_indirect.wast","passed":36,"failed":134},{"name":"comments.wast","passed":5,"failed":3},{"name":"const.wast","passed":778,"failed":0},{"name":"conversions.wast","passed":25,"failed":594},{"name":"custom.wast","passed":11,"failed":0},{"name":"data.wast","passed":47,"failed":14},{"name":"elem.wast","passed":50,"failed":49},{"name":"endianness.wast","passed":1,"failed":68},{"name":"exports.wast","passed":90,"failed":6},{"name":"f32.wast","passed":1174,"failed":1340},{"name":"f32_bitwise.wast","passed":4,"failed":360},{"name":"f32_cmp.wast","passed":2407,"failed":0},{"name":"f64.wast","passed":1018,"failed":1496},{"name":"f64_bitwise.wast","passed":4,"failed":360},{"name":"f64_cmp.wast","passed":2407,"failed":0},{"name":"fac.wast","passed":2,"failed":6},{"name":"float_exprs.wast","passed":477,"failed":423},{"name":"float_literals.wast","passed":163,"failed":0},{"name":"float_memory.wast","passed":6,"failed":84},{"name":"float_misc.wast","passed":328,"failed":113},{"name":"forward.wast","passed":1,"failed":4},{"name":"func.wast","passed":116,"failed":56},{"name":"func_ptrs.wast","passed":10,"failed":26},{"name":"global.wast","passed":51,"failed":59},{"name":"i32.wast","passed":326,"failed":134},{"name":"i64.wast","passed":31,"failed":385},{"name":"if.wast","passed":118,"failed":123},{"name":"imports.wast","passed":74,"failed":109},{"name":"inline-module.wast","passed":1,"failed":0},{"name":"int_exprs.wast","passed":100,"failed":8},{"name":"int_literals.wast","passed":29,"failed":22},{"name":"labels.wast","passed":13,"failed":16},{"name":"left-to-right.wast","passed":1,"failed":95},{"name":"linking.wast","passed":21,"failed":111},{"name":"load.wast","passed":60,"failed":37},{"name":"local_get.wast","passed":30,"failed":6},{"name":"local_set.wast","passed":49,"failed":4},{"name":"local_tee.wast","passed":65,"failed":32},{"name":"loop.wast","passed":92,"failed":28},{"name":"memory.wast","passed":34,"failed":45},{"name":"memory_grow.wast","passed":12,"failed":84},{"name":"memory_redundancy.wast","passed":1,"failed":7},{"name":"memory_size.wast","passed":6,"failed":36},{"name":"memory_trap.wast","passed":2,"failed":180},{"name":"names.wast","passed":485,"failed":1},{"name":"nop.wast","passed":40,"failed":48},{"name":"return.wast","passed":21,"failed":63},{"name":"select.wast","passed":84,"failed":64},{"name":"skip-stack-guard-page.wast","passed":1,"failed":10},{"name":"stack.wast","passed":2,"failed":5},{"name":"start.wast","passed":9,"failed":11},{"name":"store.wast","passed":59,"failed":9},{"name":"switch.wast","passed":2,"failed":26},{"name":"token.wast","passed":58,"failed":0},{"name":"traps.wast","passed":14,"failed":22},{"name":"type.wast","passed":3,"failed":0},{"name":"unreachable.wast","passed":50,"failed":14},{"name":"unreached-invalid.wast","passed":118,"failed":0},{"name":"unwind.wast","passed":27,"failed":23},{"name":"utf8-custom-section-id.wast","passed":176,"failed":0},{"name":"utf8-import-field.wast","passed":176,"failed":0},{"name":"utf8-import-module.wast","passed":176,"failed":0},{"name":"utf8-invalid-encoding.wast","passed":176,"failed":0}] +0.0.6-alpha.0,12755,7473,[{"name":"address.wast","passed":5,"failed":255},{"name":"align.wast","passed":108,"failed":48},{"name":"binary-leb128.wast","passed":90,"failed":1},{"name":"binary.wast","passed":110,"failed":2},{"name":"block.wast","passed":192,"failed":31},{"name":"br.wast","passed":84,"failed":13},{"name":"br_if.wast","passed":86,"failed":32},{"name":"br_table.wast","passed":25,"failed":149},{"name":"call.wast","passed":29,"failed":62},{"name":"call_indirect.wast","passed":36,"failed":134},{"name":"comments.wast","passed":5,"failed":3},{"name":"const.wast","passed":778,"failed":0},{"name":"conversions.wast","passed":25,"failed":594},{"name":"custom.wast","passed":11,"failed":0},{"name":"data.wast","passed":47,"failed":14},{"name":"elem.wast","passed":50,"failed":49},{"name":"endianness.wast","passed":1,"failed":68},{"name":"exports.wast","passed":90,"failed":6},{"name":"f32.wast","passed":1174,"failed":1340},{"name":"f32_bitwise.wast","passed":4,"failed":360},{"name":"f32_cmp.wast","passed":2407,"failed":0},{"name":"f64.wast","passed":1018,"failed":1496},{"name":"f64_bitwise.wast","passed":4,"failed":360},{"name":"f64_cmp.wast","passed":2407,"failed":0},{"name":"fac.wast","passed":2,"failed":6},{"name":"float_exprs.wast","passed":511,"failed":389},{"name":"float_literals.wast","passed":163,"failed":0},{"name":"float_memory.wast","passed":6,"failed":84},{"name":"float_misc.wast","passed":328,"failed":113},{"name":"forward.wast","passed":1,"failed":4},{"name":"func.wast","passed":116,"failed":56},{"name":"func_ptrs.wast","passed":10,"failed":26},{"name":"global.wast","passed":51,"failed":59},{"name":"i32.wast","passed":364,"failed":96},{"name":"i64.wast","passed":31,"failed":385},{"name":"if.wast","passed":118,"failed":123},{"name":"imports.wast","passed":74,"failed":109},{"name":"inline-module.wast","passed":1,"failed":0},{"name":"int_exprs.wast","passed":100,"failed":8},{"name":"int_literals.wast","passed":29,"failed":22},{"name":"labels.wast","passed":14,"failed":15},{"name":"left-to-right.wast","passed":1,"failed":95},{"name":"linking.wast","passed":21,"failed":111},{"name":"load.wast","passed":60,"failed":37},{"name":"local_get.wast","passed":30,"failed":6},{"name":"local_set.wast","passed":49,"failed":4},{"name":"local_tee.wast","passed":65,"failed":32},{"name":"loop.wast","passed":92,"failed":28},{"name":"memory.wast","passed":34,"failed":45},{"name":"memory_grow.wast","passed":12,"failed":84},{"name":"memory_redundancy.wast","passed":1,"failed":7},{"name":"memory_size.wast","passed":6,"failed":36},{"name":"memory_trap.wast","passed":2,"failed":180},{"name":"names.wast","passed":485,"failed":1},{"name":"nop.wast","passed":40,"failed":48},{"name":"return.wast","passed":21,"failed":63},{"name":"select.wast","passed":84,"failed":64},{"name":"skip-stack-guard-page.wast","passed":1,"failed":10},{"name":"stack.wast","passed":2,"failed":5},{"name":"start.wast","passed":9,"failed":11},{"name":"store.wast","passed":59,"failed":9},{"name":"switch.wast","passed":2,"failed":26},{"name":"token.wast","passed":58,"failed":0},{"name":"traps.wast","passed":14,"failed":22},{"name":"type.wast","passed":3,"failed":0},{"name":"unreachable.wast","passed":50,"failed":14},{"name":"unreached-invalid.wast","passed":118,"failed":0},{"name":"unwind.wast","passed":27,"failed":23},{"name":"utf8-custom-section-id.wast","passed":176,"failed":0},{"name":"utf8-import-field.wast","passed":176,"failed":0},{"name":"utf8-import-module.wast","passed":176,"failed":0},{"name":"utf8-invalid-encoding.wast","passed":176,"failed":0}] 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_s" (i32.const 1) (i32.const 0)) "integer divide by zero") +(assert_trap (invoke "rem_s" (i32.const 0) (i32.const 0)) "integer divide by zero") +(assert_return (invoke "rem_s" (i32.const 0x7fffffff) (i32.const -1)) (i32.const 0)) +(assert_return (invoke "rem_s" (i32.const 1) (i32.const 1)) (i32.const 0)) +(assert_return (invoke "rem_s" (i32.const 0) (i32.const 1)) (i32.const 0)) +(assert_return (invoke "rem_s" (i32.const 0) (i32.const -1)) (i32.const 0)) +(assert_return (invoke "rem_s" (i32.const -1) (i32.const -1)) (i32.const 0)) +(assert_return (invoke "rem_s" (i32.const 0x80000000) (i32.const -1)) (i32.const 0)) +(assert_return (invoke "rem_s" (i32.const 0x80000000) (i32.const 2)) (i32.const 0)) +(assert_return (invoke "rem_s" (i32.const 0x80000001) (i32.const 1000)) (i32.const -647)) +(assert_return (invoke "rem_s" (i32.const 5) (i32.const 2)) (i32.const 1)) +(assert_return (invoke "rem_s" (i32.const -5) (i32.const 2)) (i32.const -1)) +(assert_return (invoke "rem_s" (i32.const 5) (i32.const -2)) (i32.const 1)) +(assert_return (invoke "rem_s" (i32.const -5) (i32.const -2)) (i32.const -1)) +(assert_return (invoke "rem_s" (i32.const 7) (i32.const 3)) (i32.const 1)) +(assert_return (invoke "rem_s" (i32.const -7) (i32.const 3)) (i32.const -1)) +(assert_return (invoke "rem_s" (i32.const 7) (i32.const -3)) (i32.const 1)) +(assert_return (invoke "rem_s" (i32.const -7) (i32.const -3)) (i32.const -1)) +(assert_return (invoke "rem_s" (i32.const 11) (i32.const 5)) (i32.const 1)) +(assert_return (invoke "rem_s" (i32.const 17) (i32.const 7)) (i32.const 3)) -;; (assert_trap (invoke "rem_u" (i32.const 1) (i32.const 0)) "integer divide by zero") -;; (assert_trap (invoke "rem_u" (i32.const 0) (i32.const 0)) "integer divide by zero") -;; (assert_return (invoke "rem_u" (i32.const 1) (i32.const 1)) (i32.const 0)) -;; (assert_return (invoke "rem_u" (i32.const 0) (i32.const 1)) (i32.const 0)) -;; (assert_return (invoke "rem_u" (i32.const -1) (i32.const -1)) (i32.const 0)) -;; (assert_return (invoke "rem_u" (i32.const 0x80000000) (i32.const -1)) (i32.const 0x80000000)) -;; (assert_return (invoke "rem_u" (i32.const 0x80000000) (i32.const 2)) (i32.const 0)) -;; (assert_return (invoke "rem_u" (i32.const 0x8ff00ff0) (i32.const 0x10001)) (i32.const 0x8001)) -;; (assert_return (invoke "rem_u" (i32.const 0x80000001) (i32.const 1000)) (i32.const 649)) -;; (assert_return (invoke "rem_u" (i32.const 5) (i32.const 2)) (i32.const 1)) -;; (assert_return (invoke "rem_u" (i32.const -5) (i32.const 2)) (i32.const 1)) -;; (assert_return (invoke "rem_u" (i32.const 5) (i32.const -2)) (i32.const 5)) -;; (assert_return (invoke "rem_u" (i32.const -5) (i32.const -2)) (i32.const -5)) -;; (assert_return (invoke "rem_u" (i32.const 7) (i32.const 3)) (i32.const 1)) -;; (assert_return (invoke "rem_u" (i32.const 11) (i32.const 5)) (i32.const 1)) -;; (assert_return (invoke "rem_u" (i32.const 17) (i32.const 7)) (i32.const 3)) +(assert_trap (invoke "rem_u" (i32.const 1) (i32.const 0)) "integer divide by zero") +(assert_trap (invoke "rem_u" (i32.const 0) (i32.const 0)) "integer divide by zero") +(assert_return (invoke "rem_u" (i32.const 1) (i32.const 1)) (i32.const 0)) +(assert_return (invoke "rem_u" (i32.const 0) (i32.const 1)) (i32.const 0)) +(assert_return (invoke "rem_u" (i32.const -1) (i32.const -1)) (i32.const 0)) +(assert_return (invoke "rem_u" (i32.const 0x80000000) (i32.const -1)) (i32.const 0x80000000)) +(assert_return (invoke "rem_u" (i32.const 0x80000000) (i32.const 2)) (i32.const 0)) +(assert_return (invoke "rem_u" (i32.const 0x8ff00ff0) (i32.const 0x10001)) (i32.const 0x8001)) +(assert_return (invoke "rem_u" (i32.const 0x80000001) (i32.const 1000)) (i32.const 649)) +(assert_return (invoke "rem_u" (i32.const 5) (i32.const 2)) (i32.const 1)) +(assert_return (invoke "rem_u" (i32.const -5) (i32.const 2)) (i32.const 1)) +(assert_return (invoke "rem_u" (i32.const 5) (i32.const -2)) (i32.const 5)) +(assert_return (invoke "rem_u" (i32.const -5) (i32.const -2)) (i32.const -5)) +(assert_return (invoke "rem_u" (i32.const 7) (i32.const 3)) (i32.const 1)) +(assert_return (invoke "rem_u" (i32.const 11) (i32.const 5)) (i32.const 1)) +(assert_return (invoke "rem_u" (i32.const 17) (i32.const 7)) (i32.const 3)) -;; (assert_return (invoke "and" (i32.const 1) (i32.const 0)) (i32.const 0)) -;; (assert_return (invoke "and" (i32.const 0) (i32.const 1)) (i32.const 0)) -;; (assert_return (invoke "and" (i32.const 1) (i32.const 1)) (i32.const 1)) -;; (assert_return (invoke "and" (i32.const 0) (i32.const 0)) (i32.const 0)) -;; (assert_return (invoke "and" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 0)) -;; (assert_return (invoke "and" (i32.const 0x7fffffff) (i32.const -1)) (i32.const 0x7fffffff)) -;; (assert_return (invoke "and" (i32.const 0xf0f0ffff) (i32.const 0xfffff0f0)) (i32.const 0xf0f0f0f0)) -;; (assert_return (invoke "and" (i32.const 0xffffffff) (i32.const 0xffffffff)) (i32.const 0xffffffff)) +(assert_return (invoke "and" (i32.const 1) (i32.const 0)) (i32.const 0)) +(assert_return (invoke "and" (i32.const 0) (i32.const 1)) (i32.const 0)) +(assert_return (invoke "and" (i32.const 1) (i32.const 1)) (i32.const 1)) +(assert_return (invoke "and" (i32.const 0) (i32.const 0)) (i32.const 0)) +(assert_return (invoke "and" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 0)) +(assert_return (invoke "and" (i32.const 0x7fffffff) (i32.const -1)) (i32.const 0x7fffffff)) +(assert_return (invoke "and" (i32.const 0xf0f0ffff) (i32.const 0xfffff0f0)) (i32.const 0xf0f0f0f0)) +(assert_return (invoke "and" (i32.const 0xffffffff) (i32.const 0xffffffff)) (i32.const 0xffffffff)) -;; (assert_return (invoke "or" (i32.const 1) (i32.const 0)) (i32.const 1)) -;; (assert_return (invoke "or" (i32.const 0) (i32.const 1)) (i32.const 1)) -;; (assert_return (invoke "or" (i32.const 1) (i32.const 1)) (i32.const 1)) -;; (assert_return (invoke "or" (i32.const 0) (i32.const 0)) (i32.const 0)) -;; (assert_return (invoke "or" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const -1)) -;; (assert_return (invoke "or" (i32.const 0x80000000) (i32.const 0)) (i32.const 0x80000000)) -;; (assert_return (invoke "or" (i32.const 0xf0f0ffff) (i32.const 0xfffff0f0)) (i32.const 0xffffffff)) -;; (assert_return (invoke "or" (i32.const 0xffffffff) (i32.const 0xffffffff)) (i32.const 0xffffffff)) +(assert_return (invoke "or" (i32.const 1) (i32.const 0)) (i32.const 1)) +(assert_return (invoke "or" (i32.const 0) (i32.const 1)) (i32.const 1)) +(assert_return (invoke "or" (i32.const 1) (i32.const 1)) (i32.const 1)) +(assert_return (invoke "or" (i32.const 0) (i32.const 0)) (i32.const 0)) +(assert_return (invoke "or" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const -1)) +(assert_return (invoke "or" (i32.const 0x80000000) (i32.const 0)) (i32.const 0x80000000)) +(assert_return (invoke "or" (i32.const 0xf0f0ffff) (i32.const 0xfffff0f0)) (i32.const 0xffffffff)) +(assert_return (invoke "or" (i32.const 0xffffffff) (i32.const 0xffffffff)) (i32.const 0xffffffff)) -;; (assert_return (invoke "xor" (i32.const 1) (i32.const 0)) (i32.const 1)) -;; (assert_return (invoke "xor" (i32.const 0) (i32.const 1)) (i32.const 1)) -;; (assert_return (invoke "xor" (i32.const 1) (i32.const 1)) (i32.const 0)) -;; (assert_return (invoke "xor" (i32.const 0) (i32.const 0)) (i32.const 0)) -;; (assert_return (invoke "xor" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const -1)) -;; (assert_return (invoke "xor" (i32.const 0x80000000) (i32.const 0)) (i32.const 0x80000000)) -;; (assert_return (invoke "xor" (i32.const -1) (i32.const 0x80000000)) (i32.const 0x7fffffff)) -;; (assert_return (invoke "xor" (i32.const -1) (i32.const 0x7fffffff)) (i32.const 0x80000000)) -;; (assert_return (invoke "xor" (i32.const 0xf0f0ffff) (i32.const 0xfffff0f0)) (i32.const 0x0f0f0f0f)) -;; (assert_return (invoke "xor" (i32.const 0xffffffff) (i32.const 0xffffffff)) (i32.const 0)) +(assert_return (invoke "xor" (i32.const 1) (i32.const 0)) (i32.const 1)) +(assert_return (invoke "xor" (i32.const 0) (i32.const 1)) (i32.const 1)) +(assert_return (invoke "xor" (i32.const 1) (i32.const 1)) (i32.const 0)) +(assert_return (invoke "xor" (i32.const 0) (i32.const 0)) (i32.const 0)) +(assert_return (invoke "xor" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const -1)) +(assert_return (invoke "xor" (i32.const 0x80000000) (i32.const 0)) (i32.const 0x80000000)) +(assert_return (invoke "xor" (i32.const -1) (i32.const 0x80000000)) (i32.const 0x7fffffff)) +(assert_return (invoke "xor" (i32.const -1) (i32.const 0x7fffffff)) (i32.const 0x80000000)) +(assert_return (invoke "xor" (i32.const 0xf0f0ffff) (i32.const 0xfffff0f0)) (i32.const 0x0f0f0f0f)) +(assert_return (invoke "xor" (i32.const 0xffffffff) (i32.const 0xffffffff)) (i32.const 0)) -;; (assert_return (invoke "shl" (i32.const 1) (i32.const 1)) (i32.const 2)) -;; (assert_return (invoke "shl" (i32.const 1) (i32.const 0)) (i32.const 1)) -;; (assert_return (invoke "shl" (i32.const 0x7fffffff) (i32.const 1)) (i32.const 0xfffffffe)) -;; (assert_return (invoke "shl" (i32.const 0xffffffff) (i32.const 1)) (i32.const 0xfffffffe)) -;; (assert_return (invoke "shl" (i32.const 0x80000000) (i32.const 1)) (i32.const 0)) -;; (assert_return (invoke "shl" (i32.const 0x40000000) (i32.const 1)) (i32.const 0x80000000)) -;; (assert_return (invoke "shl" (i32.const 1) (i32.const 31)) (i32.const 0x80000000)) -;; (assert_return (invoke "shl" (i32.const 1) (i32.const 32)) (i32.const 1)) -;; (assert_return (invoke "shl" (i32.const 1) (i32.const 33)) (i32.const 2)) -;; (assert_return (invoke "shl" (i32.const 1) (i32.const -1)) (i32.const 0x80000000)) -;; (assert_return (invoke "shl" (i32.const 1) (i32.const 0x7fffffff)) (i32.const 0x80000000)) +(assert_return (invoke "shl" (i32.const 1) (i32.const 1)) (i32.const 2)) +(assert_return (invoke "shl" (i32.const 1) (i32.const 0)) (i32.const 1)) +(assert_return (invoke "shl" (i32.const 0x7fffffff) (i32.const 1)) (i32.const 0xfffffffe)) +(assert_return (invoke "shl" (i32.const 0xffffffff) (i32.const 1)) (i32.const 0xfffffffe)) +(assert_return (invoke "shl" (i32.const 0x80000000) (i32.const 1)) (i32.const 0)) +(assert_return (invoke "shl" (i32.const 0x40000000) (i32.const 1)) (i32.const 0x80000000)) +(assert_return (invoke "shl" (i32.const 1) (i32.const 31)) (i32.const 0x80000000)) +(assert_return (invoke "shl" (i32.const 1) (i32.const 32)) (i32.const 1)) +(assert_return (invoke "shl" (i32.const 1) (i32.const 33)) (i32.const 2)) +(assert_return (invoke "shl" (i32.const 1) (i32.const -1)) (i32.const 0x80000000)) +(assert_return (invoke "shl" (i32.const 1) (i32.const 0x7fffffff)) (i32.const 0x80000000)) ;; (assert_return (invoke "shr_s" (i32.const 1) (i32.const 1)) (i32.const 0)) ;; (assert_return (invoke "shr_s" (i32.const 1) (i32.const 0)) (i32.const 1)) @@ -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 "eqz" (i32.const 0)) (i32.const 1)) +(assert_return (invoke "eqz" (i32.const 1)) (i32.const 0)) +(assert_return (invoke "eqz" (i32.const 0x80000000)) (i32.const 0)) +(assert_return (invoke "eqz" (i32.const 0x7fffffff)) (i32.const 0)) +(assert_return (invoke "eqz" (i32.const 0xffffffff)) (i32.const 0)) -;; (assert_return (invoke "eq" (i32.const 0) (i32.const 0)) (i32.const 1)) -;; (assert_return (invoke "eq" (i32.const 1) (i32.const 1)) (i32.const 1)) -;; (assert_return (invoke "eq" (i32.const -1) (i32.const 1)) (i32.const 0)) -;; (assert_return (invoke "eq" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 1)) -;; (assert_return (invoke "eq" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 1)) -;; (assert_return (invoke "eq" (i32.const -1) (i32.const -1)) (i32.const 1)) -;; (assert_return (invoke "eq" (i32.const 1) (i32.const 0)) (i32.const 0)) -;; (assert_return (invoke "eq" (i32.const 0) (i32.const 1)) (i32.const 0)) -;; (assert_return (invoke "eq" (i32.const 0x80000000) (i32.const 0)) (i32.const 0)) -;; (assert_return (invoke "eq" (i32.const 0) (i32.const 0x80000000)) (i32.const 0)) -;; (assert_return (invoke "eq" (i32.const 0x80000000) (i32.const -1)) (i32.const 0)) -;; (assert_return (invoke "eq" (i32.const -1) (i32.const 0x80000000)) (i32.const 0)) -;; (assert_return (invoke "eq" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 0)) -;; (assert_return (invoke "eq" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 0)) +(assert_return (invoke "eq" (i32.const 0) (i32.const 0)) (i32.const 1)) +(assert_return (invoke "eq" (i32.const 1) (i32.const 1)) (i32.const 1)) +(assert_return (invoke "eq" (i32.const -1) (i32.const 1)) (i32.const 0)) +(assert_return (invoke "eq" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 1)) +(assert_return (invoke "eq" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 1)) +(assert_return (invoke "eq" (i32.const -1) (i32.const -1)) (i32.const 1)) +(assert_return (invoke "eq" (i32.const 1) (i32.const 0)) (i32.const 0)) +(assert_return (invoke "eq" (i32.const 0) (i32.const 1)) (i32.const 0)) +(assert_return (invoke "eq" (i32.const 0x80000000) (i32.const 0)) (i32.const 0)) +(assert_return (invoke "eq" (i32.const 0) (i32.const 0x80000000)) (i32.const 0)) +(assert_return (invoke "eq" (i32.const 0x80000000) (i32.const -1)) (i32.const 0)) +(assert_return (invoke "eq" (i32.const -1) (i32.const 0x80000000)) (i32.const 0)) +(assert_return (invoke "eq" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 0)) +(assert_return (invoke "eq" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 0)) -;; (assert_return (invoke "ne" (i32.const 0) (i32.const 0)) (i32.const 0)) -;; (assert_return (invoke "ne" (i32.const 1) (i32.const 1)) (i32.const 0)) -;; (assert_return (invoke "ne" (i32.const -1) (i32.const 1)) (i32.const 1)) -;; (assert_return (invoke "ne" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 0)) -;; (assert_return (invoke "ne" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 0)) -;; (assert_return (invoke "ne" (i32.const -1) (i32.const -1)) (i32.const 0)) -;; (assert_return (invoke "ne" (i32.const 1) (i32.const 0)) (i32.const 1)) -;; (assert_return (invoke "ne" (i32.const 0) (i32.const 1)) (i32.const 1)) -;; (assert_return (invoke "ne" (i32.const 0x80000000) (i32.const 0)) (i32.const 1)) -;; (assert_return (invoke "ne" (i32.const 0) (i32.const 0x80000000)) (i32.const 1)) -;; (assert_return (invoke "ne" (i32.const 0x80000000) (i32.const -1)) (i32.const 1)) -;; (assert_return (invoke "ne" (i32.const -1) (i32.const 0x80000000)) (i32.const 1)) -;; (assert_return (invoke "ne" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 1)) -;; (assert_return (invoke "ne" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 1)) +(assert_return (invoke "ne" (i32.const 0) (i32.const 0)) (i32.const 0)) +(assert_return (invoke "ne" (i32.const 1) (i32.const 1)) (i32.const 0)) +(assert_return (invoke "ne" (i32.const -1) (i32.const 1)) (i32.const 1)) +(assert_return (invoke "ne" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 0)) +(assert_return (invoke "ne" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 0)) +(assert_return (invoke "ne" (i32.const -1) (i32.const -1)) (i32.const 0)) +(assert_return (invoke "ne" (i32.const 1) (i32.const 0)) (i32.const 1)) +(assert_return (invoke "ne" (i32.const 0) (i32.const 1)) (i32.const 1)) +(assert_return (invoke "ne" (i32.const 0x80000000) (i32.const 0)) (i32.const 1)) +(assert_return (invoke "ne" (i32.const 0) (i32.const 0x80000000)) (i32.const 1)) +(assert_return (invoke "ne" (i32.const 0x80000000) (i32.const -1)) (i32.const 1)) +(assert_return (invoke "ne" (i32.const -1) (i32.const 0x80000000)) (i32.const 1)) +(assert_return (invoke "ne" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 1)) +(assert_return (invoke "ne" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 1)) -;; (assert_return (invoke "lt_s" (i32.const 0) (i32.const 0)) (i32.const 0)) -;; (assert_return (invoke "lt_s" (i32.const 1) (i32.const 1)) (i32.const 0)) -;; (assert_return (invoke "lt_s" (i32.const -1) (i32.const 1)) (i32.const 1)) -;; (assert_return (invoke "lt_s" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 0)) -;; (assert_return (invoke "lt_s" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 0)) -;; (assert_return (invoke "lt_s" (i32.const -1) (i32.const -1)) (i32.const 0)) -;; (assert_return (invoke "lt_s" (i32.const 1) (i32.const 0)) (i32.const 0)) -;; (assert_return (invoke "lt_s" (i32.const 0) (i32.const 1)) (i32.const 1)) -;; (assert_return (invoke "lt_s" (i32.const 0x80000000) (i32.const 0)) (i32.const 1)) -;; (assert_return (invoke "lt_s" (i32.const 0) (i32.const 0x80000000)) (i32.const 0)) -;; (assert_return (invoke "lt_s" (i32.const 0x80000000) (i32.const -1)) (i32.const 1)) -;; (assert_return (invoke "lt_s" (i32.const -1) (i32.const 0x80000000)) (i32.const 0)) -;; (assert_return (invoke "lt_s" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 1)) -;; (assert_return (invoke "lt_s" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 0)) +(assert_return (invoke "lt_s" (i32.const 0) (i32.const 0)) (i32.const 0)) +(assert_return (invoke "lt_s" (i32.const 1) (i32.const 1)) (i32.const 0)) +(assert_return (invoke "lt_s" (i32.const -1) (i32.const 1)) (i32.const 1)) +(assert_return (invoke "lt_s" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 0)) +(assert_return (invoke "lt_s" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 0)) +(assert_return (invoke "lt_s" (i32.const -1) (i32.const -1)) (i32.const 0)) +(assert_return (invoke "lt_s" (i32.const 1) (i32.const 0)) (i32.const 0)) +(assert_return (invoke "lt_s" (i32.const 0) (i32.const 1)) (i32.const 1)) +(assert_return (invoke "lt_s" (i32.const 0x80000000) (i32.const 0)) (i32.const 1)) +(assert_return (invoke "lt_s" (i32.const 0) (i32.const 0x80000000)) (i32.const 0)) +(assert_return (invoke "lt_s" (i32.const 0x80000000) (i32.const -1)) (i32.const 1)) +(assert_return (invoke "lt_s" (i32.const -1) (i32.const 0x80000000)) (i32.const 0)) +(assert_return (invoke "lt_s" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 1)) +(assert_return (invoke "lt_s" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 0)) -;; (assert_return (invoke "lt_u" (i32.const 0) (i32.const 0)) (i32.const 0)) -;; (assert_return (invoke "lt_u" (i32.const 1) (i32.const 1)) (i32.const 0)) -;; (assert_return (invoke "lt_u" (i32.const -1) (i32.const 1)) (i32.const 0)) -;; (assert_return (invoke "lt_u" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 0)) -;; (assert_return (invoke "lt_u" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 0)) -;; (assert_return (invoke "lt_u" (i32.const -1) (i32.const -1)) (i32.const 0)) -;; (assert_return (invoke "lt_u" (i32.const 1) (i32.const 0)) (i32.const 0)) -;; (assert_return (invoke "lt_u" (i32.const 0) (i32.const 1)) (i32.const 1)) -;; (assert_return (invoke "lt_u" (i32.const 0x80000000) (i32.const 0)) (i32.const 0)) -;; (assert_return (invoke "lt_u" (i32.const 0) (i32.const 0x80000000)) (i32.const 1)) -;; (assert_return (invoke "lt_u" (i32.const 0x80000000) (i32.const -1)) (i32.const 1)) -;; (assert_return (invoke "lt_u" (i32.const -1) (i32.const 0x80000000)) (i32.const 0)) -;; (assert_return (invoke "lt_u" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 0)) -;; (assert_return (invoke "lt_u" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 1)) +(assert_return (invoke "lt_u" (i32.const 0) (i32.const 0)) (i32.const 0)) +(assert_return (invoke "lt_u" (i32.const 1) (i32.const 1)) (i32.const 0)) +(assert_return (invoke "lt_u" (i32.const -1) (i32.const 1)) (i32.const 0)) +(assert_return (invoke "lt_u" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 0)) +(assert_return (invoke "lt_u" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 0)) +(assert_return (invoke "lt_u" (i32.const -1) (i32.const -1)) (i32.const 0)) +(assert_return (invoke "lt_u" (i32.const 1) (i32.const 0)) (i32.const 0)) +(assert_return (invoke "lt_u" (i32.const 0) (i32.const 1)) (i32.const 1)) +(assert_return (invoke "lt_u" (i32.const 0x80000000) (i32.const 0)) (i32.const 0)) +(assert_return (invoke "lt_u" (i32.const 0) (i32.const 0x80000000)) (i32.const 1)) +(assert_return (invoke "lt_u" (i32.const 0x80000000) (i32.const -1)) (i32.const 1)) +(assert_return (invoke "lt_u" (i32.const -1) (i32.const 0x80000000)) (i32.const 0)) +(assert_return (invoke "lt_u" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 0)) +(assert_return (invoke "lt_u" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 1)) -;; (assert_return (invoke "le_s" (i32.const 0) (i32.const 0)) (i32.const 1)) -;; (assert_return (invoke "le_s" (i32.const 1) (i32.const 1)) (i32.const 1)) -;; (assert_return (invoke "le_s" (i32.const -1) (i32.const 1)) (i32.const 1)) -;; (assert_return (invoke "le_s" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 1)) -;; (assert_return (invoke "le_s" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 1)) -;; (assert_return (invoke "le_s" (i32.const -1) (i32.const -1)) (i32.const 1)) -;; (assert_return (invoke "le_s" (i32.const 1) (i32.const 0)) (i32.const 0)) -;; (assert_return (invoke "le_s" (i32.const 0) (i32.const 1)) (i32.const 1)) -;; (assert_return (invoke "le_s" (i32.const 0x80000000) (i32.const 0)) (i32.const 1)) -;; (assert_return (invoke "le_s" (i32.const 0) (i32.const 0x80000000)) (i32.const 0)) -;; (assert_return (invoke "le_s" (i32.const 0x80000000) (i32.const -1)) (i32.const 1)) -;; (assert_return (invoke "le_s" (i32.const -1) (i32.const 0x80000000)) (i32.const 0)) -;; (assert_return (invoke "le_s" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 1)) -;; (assert_return (invoke "le_s" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 0)) +(assert_return (invoke "le_s" (i32.const 0) (i32.const 0)) (i32.const 1)) +(assert_return (invoke "le_s" (i32.const 1) (i32.const 1)) (i32.const 1)) +(assert_return (invoke "le_s" (i32.const -1) (i32.const 1)) (i32.const 1)) +(assert_return (invoke "le_s" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 1)) +(assert_return (invoke "le_s" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 1)) +(assert_return (invoke "le_s" (i32.const -1) (i32.const -1)) (i32.const 1)) +(assert_return (invoke "le_s" (i32.const 1) (i32.const 0)) (i32.const 0)) +(assert_return (invoke "le_s" (i32.const 0) (i32.const 1)) (i32.const 1)) +(assert_return (invoke "le_s" (i32.const 0x80000000) (i32.const 0)) (i32.const 1)) +(assert_return (invoke "le_s" (i32.const 0) (i32.const 0x80000000)) (i32.const 0)) +(assert_return (invoke "le_s" (i32.const 0x80000000) (i32.const -1)) (i32.const 1)) +(assert_return (invoke "le_s" (i32.const -1) (i32.const 0x80000000)) (i32.const 0)) +(assert_return (invoke "le_s" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 1)) +(assert_return (invoke "le_s" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 0)) -;; (assert_return (invoke "le_u" (i32.const 0) (i32.const 0)) (i32.const 1)) -;; (assert_return (invoke "le_u" (i32.const 1) (i32.const 1)) (i32.const 1)) -;; (assert_return (invoke "le_u" (i32.const -1) (i32.const 1)) (i32.const 0)) -;; (assert_return (invoke "le_u" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 1)) -;; (assert_return (invoke "le_u" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 1)) -;; (assert_return (invoke "le_u" (i32.const -1) (i32.const -1)) (i32.const 1)) -;; (assert_return (invoke "le_u" (i32.const 1) (i32.const 0)) (i32.const 0)) -;; (assert_return (invoke "le_u" (i32.const 0) (i32.const 1)) (i32.const 1)) -;; (assert_return (invoke "le_u" (i32.const 0x80000000) (i32.const 0)) (i32.const 0)) -;; (assert_return (invoke "le_u" (i32.const 0) (i32.const 0x80000000)) (i32.const 1)) -;; (assert_return (invoke "le_u" (i32.const 0x80000000) (i32.const -1)) (i32.const 1)) -;; (assert_return (invoke "le_u" (i32.const -1) (i32.const 0x80000000)) (i32.const 0)) -;; (assert_return (invoke "le_u" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 0)) -;; (assert_return (invoke "le_u" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 1)) +(assert_return (invoke "le_u" (i32.const 0) (i32.const 0)) (i32.const 1)) +(assert_return (invoke "le_u" (i32.const 1) (i32.const 1)) (i32.const 1)) +(assert_return (invoke "le_u" (i32.const -1) (i32.const 1)) (i32.const 0)) +(assert_return (invoke "le_u" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 1)) +(assert_return (invoke "le_u" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 1)) +(assert_return (invoke "le_u" (i32.const -1) (i32.const -1)) (i32.const 1)) +(assert_return (invoke "le_u" (i32.const 1) (i32.const 0)) (i32.const 0)) +(assert_return (invoke "le_u" (i32.const 0) (i32.const 1)) (i32.const 1)) +(assert_return (invoke "le_u" (i32.const 0x80000000) (i32.const 0)) (i32.const 0)) +(assert_return (invoke "le_u" (i32.const 0) (i32.const 0x80000000)) (i32.const 1)) +(assert_return (invoke "le_u" (i32.const 0x80000000) (i32.const -1)) (i32.const 1)) +(assert_return (invoke "le_u" (i32.const -1) (i32.const 0x80000000)) (i32.const 0)) +(assert_return (invoke "le_u" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 0)) +(assert_return (invoke "le_u" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 1)) -;; (assert_return (invoke "gt_s" (i32.const 0) (i32.const 0)) (i32.const 0)) -;; (assert_return (invoke "gt_s" (i32.const 1) (i32.const 1)) (i32.const 0)) -;; (assert_return (invoke "gt_s" (i32.const -1) (i32.const 1)) (i32.const 0)) -;; (assert_return (invoke "gt_s" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 0)) -;; (assert_return (invoke "gt_s" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 0)) -;; (assert_return (invoke "gt_s" (i32.const -1) (i32.const -1)) (i32.const 0)) -;; (assert_return (invoke "gt_s" (i32.const 1) (i32.const 0)) (i32.const 1)) -;; (assert_return (invoke "gt_s" (i32.const 0) (i32.const 1)) (i32.const 0)) -;; (assert_return (invoke "gt_s" (i32.const 0x80000000) (i32.const 0)) (i32.const 0)) -;; (assert_return (invoke "gt_s" (i32.const 0) (i32.const 0x80000000)) (i32.const 1)) -;; (assert_return (invoke "gt_s" (i32.const 0x80000000) (i32.const -1)) (i32.const 0)) -;; (assert_return (invoke "gt_s" (i32.const -1) (i32.const 0x80000000)) (i32.const 1)) -;; (assert_return (invoke "gt_s" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 0)) -;; (assert_return (invoke "gt_s" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 1)) +(assert_return (invoke "gt_s" (i32.const 0) (i32.const 0)) (i32.const 0)) +(assert_return (invoke "gt_s" (i32.const 1) (i32.const 1)) (i32.const 0)) +(assert_return (invoke "gt_s" (i32.const -1) (i32.const 1)) (i32.const 0)) +(assert_return (invoke "gt_s" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 0)) +(assert_return (invoke "gt_s" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 0)) +(assert_return (invoke "gt_s" (i32.const -1) (i32.const -1)) (i32.const 0)) +(assert_return (invoke "gt_s" (i32.const 1) (i32.const 0)) (i32.const 1)) +(assert_return (invoke "gt_s" (i32.const 0) (i32.const 1)) (i32.const 0)) +(assert_return (invoke "gt_s" (i32.const 0x80000000) (i32.const 0)) (i32.const 0)) +(assert_return (invoke "gt_s" (i32.const 0) (i32.const 0x80000000)) (i32.const 1)) +(assert_return (invoke "gt_s" (i32.const 0x80000000) (i32.const -1)) (i32.const 0)) +(assert_return (invoke "gt_s" (i32.const -1) (i32.const 0x80000000)) (i32.const 1)) +(assert_return (invoke "gt_s" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 0)) +(assert_return (invoke "gt_s" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 1)) -;; (assert_return (invoke "gt_u" (i32.const 0) (i32.const 0)) (i32.const 0)) -;; (assert_return (invoke "gt_u" (i32.const 1) (i32.const 1)) (i32.const 0)) -;; (assert_return (invoke "gt_u" (i32.const -1) (i32.const 1)) (i32.const 1)) -;; (assert_return (invoke "gt_u" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 0)) -;; (assert_return (invoke "gt_u" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 0)) -;; (assert_return (invoke "gt_u" (i32.const -1) (i32.const -1)) (i32.const 0)) -;; (assert_return (invoke "gt_u" (i32.const 1) (i32.const 0)) (i32.const 1)) -;; (assert_return (invoke "gt_u" (i32.const 0) (i32.const 1)) (i32.const 0)) -;; (assert_return (invoke "gt_u" (i32.const 0x80000000) (i32.const 0)) (i32.const 1)) -;; (assert_return (invoke "gt_u" (i32.const 0) (i32.const 0x80000000)) (i32.const 0)) -;; (assert_return (invoke "gt_u" (i32.const 0x80000000) (i32.const -1)) (i32.const 0)) -;; (assert_return (invoke "gt_u" (i32.const -1) (i32.const 0x80000000)) (i32.const 1)) -;; (assert_return (invoke "gt_u" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 1)) -;; (assert_return (invoke "gt_u" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 0)) +(assert_return (invoke "gt_u" (i32.const 0) (i32.const 0)) (i32.const 0)) +(assert_return (invoke "gt_u" (i32.const 1) (i32.const 1)) (i32.const 0)) +(assert_return (invoke "gt_u" (i32.const -1) (i32.const 1)) (i32.const 1)) +(assert_return (invoke "gt_u" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 0)) +(assert_return (invoke "gt_u" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 0)) +(assert_return (invoke "gt_u" (i32.const -1) (i32.const -1)) (i32.const 0)) +(assert_return (invoke "gt_u" (i32.const 1) (i32.const 0)) (i32.const 1)) +(assert_return (invoke "gt_u" (i32.const 0) (i32.const 1)) (i32.const 0)) +(assert_return (invoke "gt_u" (i32.const 0x80000000) (i32.const 0)) (i32.const 1)) +(assert_return (invoke "gt_u" (i32.const 0) (i32.const 0x80000000)) (i32.const 0)) +(assert_return (invoke "gt_u" (i32.const 0x80000000) (i32.const -1)) (i32.const 0)) +(assert_return (invoke "gt_u" (i32.const -1) (i32.const 0x80000000)) (i32.const 1)) +(assert_return (invoke "gt_u" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 1)) +(assert_return (invoke "gt_u" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 0)) -;; (assert_return (invoke "ge_s" (i32.const 0) (i32.const 0)) (i32.const 1)) -;; (assert_return (invoke "ge_s" (i32.const 1) (i32.const 1)) (i32.const 1)) -;; (assert_return (invoke "ge_s" (i32.const -1) (i32.const 1)) (i32.const 0)) -;; (assert_return (invoke "ge_s" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 1)) -;; (assert_return (invoke "ge_s" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 1)) -;; (assert_return (invoke "ge_s" (i32.const -1) (i32.const -1)) (i32.const 1)) -;; (assert_return (invoke "ge_s" (i32.const 1) (i32.const 0)) (i32.const 1)) -;; (assert_return (invoke "ge_s" (i32.const 0) (i32.const 1)) (i32.const 0)) -;; (assert_return (invoke "ge_s" (i32.const 0x80000000) (i32.const 0)) (i32.const 0)) -;; (assert_return (invoke "ge_s" (i32.const 0) (i32.const 0x80000000)) (i32.const 1)) -;; (assert_return (invoke "ge_s" (i32.const 0x80000000) (i32.const -1)) (i32.const 0)) -;; (assert_return (invoke "ge_s" (i32.const -1) (i32.const 0x80000000)) (i32.const 1)) -;; (assert_return (invoke "ge_s" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 0)) -;; (assert_return (invoke "ge_s" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 1)) +(assert_return (invoke "ge_s" (i32.const 0) (i32.const 0)) (i32.const 1)) +(assert_return (invoke "ge_s" (i32.const 1) (i32.const 1)) (i32.const 1)) +(assert_return (invoke "ge_s" (i32.const -1) (i32.const 1)) (i32.const 0)) +(assert_return (invoke "ge_s" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 1)) +(assert_return (invoke "ge_s" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 1)) +(assert_return (invoke "ge_s" (i32.const -1) (i32.const -1)) (i32.const 1)) +(assert_return (invoke "ge_s" (i32.const 1) (i32.const 0)) (i32.const 1)) +(assert_return (invoke "ge_s" (i32.const 0) (i32.const 1)) (i32.const 0)) +(assert_return (invoke "ge_s" (i32.const 0x80000000) (i32.const 0)) (i32.const 0)) +(assert_return (invoke "ge_s" (i32.const 0) (i32.const 0x80000000)) (i32.const 1)) +(assert_return (invoke "ge_s" (i32.const 0x80000000) (i32.const -1)) (i32.const 0)) +(assert_return (invoke "ge_s" (i32.const -1) (i32.const 0x80000000)) (i32.const 1)) +(assert_return (invoke "ge_s" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 0)) +(assert_return (invoke "ge_s" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 1)) -;; (assert_return (invoke "ge_u" (i32.const 0) (i32.const 0)) (i32.const 1)) -;; (assert_return (invoke "ge_u" (i32.const 1) (i32.const 1)) (i32.const 1)) -;; (assert_return (invoke "ge_u" (i32.const -1) (i32.const 1)) (i32.const 1)) -;; (assert_return (invoke "ge_u" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 1)) -;; (assert_return (invoke "ge_u" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 1)) -;; (assert_return (invoke "ge_u" (i32.const -1) (i32.const -1)) (i32.const 1)) -;; (assert_return (invoke "ge_u" (i32.const 1) (i32.const 0)) (i32.const 1)) -;; (assert_return (invoke "ge_u" (i32.const 0) (i32.const 1)) (i32.const 0)) -;; (assert_return (invoke "ge_u" (i32.const 0x80000000) (i32.const 0)) (i32.const 1)) -;; (assert_return (invoke "ge_u" (i32.const 0) (i32.const 0x80000000)) (i32.const 0)) -;; (assert_return (invoke "ge_u" (i32.const 0x80000000) (i32.const -1)) (i32.const 0)) -;; (assert_return (invoke "ge_u" (i32.const -1) (i32.const 0x80000000)) (i32.const 1)) -;; (assert_return (invoke "ge_u" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 1)) -;; (assert_return (invoke "ge_u" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 0)) +(assert_return (invoke "ge_u" (i32.const 0) (i32.const 0)) (i32.const 1)) +(assert_return (invoke "ge_u" (i32.const 1) (i32.const 1)) (i32.const 1)) +(assert_return (invoke "ge_u" (i32.const -1) (i32.const 1)) (i32.const 1)) +(assert_return (invoke "ge_u" (i32.const 0x80000000) (i32.const 0x80000000)) (i32.const 1)) +(assert_return (invoke "ge_u" (i32.const 0x7fffffff) (i32.const 0x7fffffff)) (i32.const 1)) +(assert_return (invoke "ge_u" (i32.const -1) (i32.const -1)) (i32.const 1)) +(assert_return (invoke "ge_u" (i32.const 1) (i32.const 0)) (i32.const 1)) +(assert_return (invoke "ge_u" (i32.const 0) (i32.const 1)) (i32.const 0)) +(assert_return (invoke "ge_u" (i32.const 0x80000000) (i32.const 0)) (i32.const 1)) +(assert_return (invoke "ge_u" (i32.const 0) (i32.const 0x80000000)) (i32.const 0)) +(assert_return (invoke "ge_u" (i32.const 0x80000000) (i32.const -1)) (i32.const 0)) +(assert_return (invoke "ge_u" (i32.const -1) (i32.const 0x80000000)) (i32.const 1)) +(assert_return (invoke "ge_u" (i32.const 0x80000000) (i32.const 0x7fffffff)) (i32.const 1)) +(assert_return (invoke "ge_u" (i32.const 0x7fffffff) (i32.const 0x80000000)) (i32.const 0)) -;; (assert_invalid -;; (module -;; (func $type-unary-operand-empty -;; (i32.eqz) (drop) -;; ) -;; ) -;; "type mismatch" -;; ) -;; (assert_invalid -;; (module -;; (func $type-unary-operand-empty-in-block -;; (i32.const 0) -;; (block (i32.eqz) (drop)) -;; ) -;; ) -;; "type mismatch" -;; ) -;; (assert_invalid -;; (module -;; (func $type-unary-operand-empty-in-loop -;; (i32.const 0) -;; (loop (i32.eqz) (drop)) -;; ) -;; ) -;; "type mismatch" -;; ) -;; (assert_invalid -;; (module -;; (func $type-unary-operand-empty-in-if -;; (i32.const 0) (i32.const 0) -;; (if (then (i32.eqz) (drop))) -;; ) -;; ) -;; "type mismatch" -;; ) -;; (assert_invalid -;; (module -;; (func $type-unary-operand-empty-in-else -;; (i32.const 0) (i32.const 0) -;; (if (result i32) (then (i32.const 0)) (else (i32.eqz))) (drop) -;; ) -;; ) -;; "type mismatch" -;; ) -;; (assert_invalid -;; (module -;; (func $type-unary-operand-empty-in-br -;; (i32.const 0) -;; (block (br 0 (i32.eqz)) (drop)) -;; ) -;; ) -;; "type mismatch" -;; ) -;; (assert_invalid -;; (module -;; (func $type-unary-operand-empty-in-br_if -;; (i32.const 0) -;; (block (br_if 0 (i32.eqz) (i32.const 1)) (drop)) -;; ) -;; ) -;; "type mismatch" -;; ) -;; (assert_invalid -;; (module -;; (func $type-unary-operand-empty-in-br_table -;; (i32.const 0) -;; (block (br_table 0 (i32.eqz)) (drop)) -;; ) -;; ) -;; "type mismatch" -;; ) -;; (assert_invalid -;; (module -;; (func $type-unary-operand-empty-in-return -;; (return (i32.eqz)) (drop) -;; ) -;; ) -;; "type mismatch" -;; ) -;; (assert_invalid -;; (module -;; (func $type-unary-operand-empty-in-select -;; (select (i32.eqz) (i32.const 1) (i32.const 2)) (drop) -;; ) -;; ) -;; "type mismatch" -;; ) -;; (assert_invalid -;; (module -;; (func $type-unary-operand-empty-in-call -;; (call 1 (i32.eqz)) (drop) -;; ) -;; (func (param i32) (result i32) (local.get 0)) -;; ) -;; "type mismatch" -;; ) -;; (assert_invalid -;; (module -;; (func $f (param i32) (result i32) (local.get 0)) -;; (type $sig (func (param i32) (result i32))) -;; (table funcref (elem $f)) -;; (func $type-unary-operand-empty-in-call_indirect -;; (block (result i32) -;; (call_indirect (type $sig) -;; (i32.eqz) (i32.const 0) -;; ) -;; (drop) -;; ) -;; ) -;; ) -;; "type mismatch" -;; ) -;; (assert_invalid -;; (module -;; (func $type-unary-operand-empty-in-local.set -;; (local i32) -;; (local.set 0 (i32.eqz)) (local.get 0) (drop) -;; ) -;; ) -;; "type mismatch" -;; ) -;; (assert_invalid -;; (module -;; (func $type-unary-operand-empty-in-local.tee -;; (local i32) -;; (local.tee 0 (i32.eqz)) (drop) -;; ) -;; ) -;; "type mismatch" -;; ) -;; (assert_invalid -;; (module -;; (global $x (mut i32) (i32.const 0)) -;; (func $type-unary-operand-empty-in-global.set -;; (global.set $x (i32.eqz)) (global.get $x) (drop) -;; ) -;; ) -;; "type mismatch" -;; ) -;; (assert_invalid -;; (module -;; (memory 0) -;; (func $type-unary-operand-empty-in-memory.grow -;; (memory.grow (i32.eqz)) (drop) -;; ) -;; ) -;; "type mismatch" -;; ) -;; (assert_invalid -;; (module -;; (memory 0) -;; (func $type-unary-operand-empty-in-load -;; (i32.load (i32.eqz)) (drop) -;; ) -;; ) -;; "type mismatch" -;; ) -;; (assert_invalid -;; (module -;; (memory 1) -;; (func $type-unary-operand-empty-in-store -;; (i32.store (i32.eqz) (i32.const 1)) -;; ) -;; ) -;; "type mismatch" -;; ) +(assert_invalid + (module + (func $type-unary-operand-empty + (i32.eqz) (drop) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (func $type-unary-operand-empty-in-block + (i32.const 0) + (block (i32.eqz) (drop)) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (func $type-unary-operand-empty-in-loop + (i32.const 0) + (loop (i32.eqz) (drop)) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (func $type-unary-operand-empty-in-if + (i32.const 0) (i32.const 0) + (if (then (i32.eqz) (drop))) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (func $type-unary-operand-empty-in-else + (i32.const 0) (i32.const 0) + (if (result i32) (then (i32.const 0)) (else (i32.eqz))) (drop) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (func $type-unary-operand-empty-in-br + (i32.const 0) + (block (br 0 (i32.eqz)) (drop)) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (func $type-unary-operand-empty-in-br_if + (i32.const 0) + (block (br_if 0 (i32.eqz) (i32.const 1)) (drop)) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (func $type-unary-operand-empty-in-br_table + (i32.const 0) + (block (br_table 0 (i32.eqz)) (drop)) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (func $type-unary-operand-empty-in-return + (return (i32.eqz)) (drop) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (func $type-unary-operand-empty-in-select + (select (i32.eqz) (i32.const 1) (i32.const 2)) (drop) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (func $type-unary-operand-empty-in-call + (call 1 (i32.eqz)) (drop) + ) + (func (param i32) (result i32) (local.get 0)) + ) + "type mismatch" +) +(assert_invalid + (module + (func $f (param i32) (result i32) (local.get 0)) + (type $sig (func (param i32) (result i32))) + (table funcref (elem $f)) + (func $type-unary-operand-empty-in-call_indirect + (block (result i32) + (call_indirect (type $sig) + (i32.eqz) (i32.const 0) + ) + (drop) + ) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (func $type-unary-operand-empty-in-local.set + (local i32) + (local.set 0 (i32.eqz)) (local.get 0) (drop) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (func $type-unary-operand-empty-in-local.tee + (local i32) + (local.tee 0 (i32.eqz)) (drop) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (global $x (mut i32) (i32.const 0)) + (func $type-unary-operand-empty-in-global.set + (global.set $x (i32.eqz)) (global.get $x) (drop) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (memory 0) + (func $type-unary-operand-empty-in-memory.grow + (memory.grow (i32.eqz)) (drop) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (memory 0) + (func $type-unary-operand-empty-in-load + (i32.load (i32.eqz)) (drop) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (memory 1) + (func $type-unary-operand-empty-in-store + (i32.store (i32.eqz) (i32.const 1)) + ) + ) + "type mismatch" +) -;; (assert_invalid -;; (module -;; (func $type-binary-1st-operand-empty -;; (i32.add) (drop) -;; ) -;; ) -;; "type mismatch" -;; ) -;; (assert_invalid -;; (module -;; (func $type-binary-2nd-operand-empty -;; (i32.const 0) (i32.add) (drop) -;; ) -;; ) -;; "type mismatch" -;; ) -;; (assert_invalid -;; (module -;; (func $type-binary-1st-operand-empty-in-block -;; (i32.const 0) (i32.const 0) -;; (block (i32.add) (drop)) -;; ) -;; ) -;; "type mismatch" -;; ) -;; (assert_invalid -;; (module -;; (func $type-binary-2nd-operand-empty-in-block -;; (i32.const 0) -;; (block (i32.const 0) (i32.add) (drop)) -;; ) -;; ) -;; "type mismatch" -;; ) -;; (assert_invalid -;; (module -;; (func $type-binary-1st-operand-empty-in-loop -;; (i32.const 0) (i32.const 0) -;; (loop (i32.add) (drop)) -;; ) -;; ) -;; "type mismatch" -;; ) -;; (assert_invalid -;; (module -;; (func $type-binary-2nd-operand-empty-in-loop -;; (i32.const 0) -;; (loop (i32.const 0) (i32.add) (drop)) -;; ) -;; ) -;; "type mismatch" -;; ) -;; (assert_invalid -;; (module -;; (func $type-binary-1st-operand-empty-in-if -;; (i32.const 0) (i32.const 0) (i32.const 0) -;; (if (i32.add) (then (drop))) -;; ) -;; ) -;; "type mismatch" -;; ) -;; (assert_invalid -;; (module -;; (func $type-binary-2nd-operand-empty-in-if -;; (i32.const 0) (i32.const 0) -;; (if (i32.const 0) (then (i32.add)) (else (drop))) -;; ) -;; ) -;; "type mismatch" -;; ) -;; (assert_invalid -;; (module -;; (func $type-binary-1st-operand-empty-in-else -;; (i32.const 0) (i32.const 0) (i32.const 0) -;; (if (result i32) (then (i32.const 0)) (else (i32.add) (i32.const 0))) -;; (drop) (drop) -;; ) -;; ) -;; "type mismatch" -;; ) -;; (assert_invalid -;; (module -;; (func $type-binary-2nd-operand-empty-in-else -;; (i32.const 0) (i32.const 0) -;; (if (result i32) (then (i32.const 0)) (else (i32.add))) -;; (drop) -;; ) -;; ) -;; "type mismatch" -;; ) -;; (assert_invalid -;; (module -;; (func $type-binary-1st-operand-empty-in-br -;; (i32.const 0) (i32.const 0) -;; (block (br 0 (i32.add)) (drop)) -;; ) -;; ) -;; "type mismatch" -;; ) -;; (assert_invalid -;; (module -;; (func $type-binary-2nd-operand-empty-in-br -;; (i32.const 0) -;; (block (br 0 (i32.const 0) (i32.add)) (drop)) -;; ) -;; ) -;; "type mismatch" -;; ) -;; (assert_invalid -;; (module -;; (func $type-binary-1st-operand-empty-in-br_if -;; (i32.const 0) (i32.const 0) -;; (block (br_if 0 (i32.add) (i32.const 1)) (drop)) -;; ) -;; ) -;; "type mismatch" -;; ) -;; (assert_invalid -;; (module -;; (func $type-binary-2nd-operand-empty-in-br_if -;; (i32.const 0) -;; (block (br_if 0 (i32.const 0) (i32.add) (i32.const 1)) (drop)) -;; ) -;; ) -;; "type mismatch" -;; ) -;; (assert_invalid -;; (module -;; (func $type-binary-1st-operand-empty-in-br_table -;; (i32.const 0) (i32.const 0) -;; (block (br_table 0 (i32.add)) (drop)) -;; ) -;; ) -;; "type mismatch" -;; ) -;; (assert_invalid -;; (module -;; (func $type-binary-2nd-operand-empty-in-br_table -;; (i32.const 0) -;; (block (br_table 0 (i32.const 0) (i32.add)) (drop)) -;; ) -;; ) -;; "type mismatch" -;; ) -;; (assert_invalid -;; (module -;; (func $type-binary-1st-operand-empty-in-return -;; (return (i32.add)) (drop) -;; ) -;; ) -;; "type mismatch" -;; ) -;; (assert_invalid -;; (module -;; (func $type-binary-2nd-operand-empty-in-return -;; (return (i32.const 0) (i32.add)) (drop) -;; ) -;; ) -;; "type mismatch" -;; ) -;; (assert_invalid -;; (module -;; (func $type-binary-1st-operand-empty-in-select -;; (select (i32.add) (i32.const 1) (i32.const 2)) (drop) -;; ) -;; ) -;; "type mismatch" -;; ) -;; (assert_invalid -;; (module -;; (func $type-binary-2nd-operand-empty-in-select -;; (select (i32.const 0) (i32.add) (i32.const 1) (i32.const 2)) (drop) -;; ) -;; ) -;; "type mismatch" -;; ) -;; (assert_invalid -;; (module -;; (func $type-binary-1st-operand-empty-in-call -;; (call 1 (i32.add)) (drop) -;; ) -;; (func (param i32 i32) (result i32) (local.get 0)) -;; ) -;; "type mismatch" -;; ) -;; (assert_invalid -;; (module -;; (func $type-binary-2nd-operand-empty-in-call -;; (call 1 (i32.const 0) (i32.add)) (drop) -;; ) -;; (func (param i32 i32) (result i32) (local.get 0)) -;; ) -;; "type mismatch" -;; ) -;; (assert_invalid -;; (module -;; (func $f (param i32) (result i32) (local.get 0)) -;; (type $sig (func (param i32) (result i32))) -;; (table funcref (elem $f)) -;; (func $type-binary-1st-operand-empty-in-call_indirect -;; (block (result i32) -;; (call_indirect (type $sig) -;; (i32.add) (i32.const 0) -;; ) -;; (drop) -;; ) -;; ) -;; ) -;; "type mismatch" -;; ) -;; (assert_invalid -;; (module -;; (func $f (param i32) (result i32) (local.get 0)) -;; (type $sig (func (param i32) (result i32))) -;; (table funcref (elem $f)) -;; (func $type-binary-2nd-operand-empty-in-call_indirect -;; (block (result i32) -;; (call_indirect (type $sig) -;; (i32.const 0) (i32.add) (i32.const 0) -;; ) -;; (drop) -;; ) -;; ) -;; ) -;; "type mismatch" -;; ) -;; (assert_invalid -;; (module -;; (func $type-binary-1st-operand-empty-in-local.set -;; (local i32) -;; (local.set 0 (i32.add)) (local.get 0) (drop) -;; ) -;; ) -;; "type mismatch" -;; ) -;; (assert_invalid -;; (module -;; (func $type-binary-2nd-operand-empty-in-local.set -;; (local i32) -;; (local.set 0 (i32.const 0) (i32.add)) (local.get 0) (drop) -;; ) -;; ) -;; "type mismatch" -;; ) -;; (assert_invalid -;; (module -;; (func $type-binary-1st-operand-empty-in-local.tee -;; (local i32) -;; (local.tee 0 (i32.add)) (drop) -;; ) -;; ) -;; "type mismatch" -;; ) -;; (assert_invalid -;; (module -;; (func $type-binary-2nd-operand-empty-in-local.tee -;; (local i32) -;; (local.tee 0 (i32.const 0) (i32.add)) (drop) -;; ) -;; ) -;; "type mismatch" -;; ) -;; (assert_invalid -;; (module -;; (global $x (mut i32) (i32.const 0)) -;; (func $type-binary-1st-operand-empty-in-global.set -;; (global.set $x (i32.add)) (global.get $x) (drop) -;; ) -;; ) -;; "type mismatch" -;; ) -;; (assert_invalid -;; (module -;; (global $x (mut i32) (i32.const 0)) -;; (func $type-binary-2nd-operand-empty-in-global.set -;; (global.set $x (i32.const 0) (i32.add)) (global.get $x) (drop) -;; ) -;; ) -;; "type mismatch" -;; ) -;; (assert_invalid -;; (module -;; (memory 0) -;; (func $type-binary-1st-operand-empty-in-memory.grow -;; (memory.grow (i32.add)) (drop) -;; ) -;; ) -;; "type mismatch" -;; ) -;; (assert_invalid -;; (module -;; (memory 0) -;; (func $type-binary-2nd-operand-empty-in-memory.grow -;; (memory.grow (i32.const 0) (i32.add)) (drop) -;; ) -;; ) -;; "type mismatch" -;; ) -;; (assert_invalid -;; (module -;; (memory 0) -;; (func $type-binary-1st-operand-empty-in-load -;; (i32.load (i32.add)) (drop) -;; ) -;; ) -;; "type mismatch" -;; ) -;; (assert_invalid -;; (module -;; (memory 0) -;; (func $type-binary-2nd-operand-empty-in-load -;; (i32.load (i32.const 0) (i32.add)) (drop) -;; ) -;; ) -;; "type mismatch" -;; ) -;; (assert_invalid -;; (module -;; (memory 1) -;; (func $type-binary-1st-operand-empty-in-store -;; (i32.store (i32.add) (i32.const 1)) -;; ) -;; ) -;; "type mismatch" -;; ) -;; (assert_invalid -;; (module -;; (memory 1) -;; (func $type-binary-2nd-operand-empty-in-store -;; (i32.store (i32.const 1) (i32.add) (i32.const 0)) -;; ) -;; ) -;; "type mismatch" -;; ) +(assert_invalid + (module + (func $type-binary-1st-operand-empty + (i32.add) (drop) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (func $type-binary-2nd-operand-empty + (i32.const 0) (i32.add) (drop) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (func $type-binary-1st-operand-empty-in-block + (i32.const 0) (i32.const 0) + (block (i32.add) (drop)) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (func $type-binary-2nd-operand-empty-in-block + (i32.const 0) + (block (i32.const 0) (i32.add) (drop)) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (func $type-binary-1st-operand-empty-in-loop + (i32.const 0) (i32.const 0) + (loop (i32.add) (drop)) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (func $type-binary-2nd-operand-empty-in-loop + (i32.const 0) + (loop (i32.const 0) (i32.add) (drop)) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (func $type-binary-1st-operand-empty-in-if + (i32.const 0) (i32.const 0) (i32.const 0) + (if (i32.add) (then (drop))) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (func $type-binary-2nd-operand-empty-in-if + (i32.const 0) (i32.const 0) + (if (i32.const 0) (then (i32.add)) (else (drop))) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (func $type-binary-1st-operand-empty-in-else + (i32.const 0) (i32.const 0) (i32.const 0) + (if (result i32) (then (i32.const 0)) (else (i32.add) (i32.const 0))) + (drop) (drop) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (func $type-binary-2nd-operand-empty-in-else + (i32.const 0) (i32.const 0) + (if (result i32) (then (i32.const 0)) (else (i32.add))) + (drop) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (func $type-binary-1st-operand-empty-in-br + (i32.const 0) (i32.const 0) + (block (br 0 (i32.add)) (drop)) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (func $type-binary-2nd-operand-empty-in-br + (i32.const 0) + (block (br 0 (i32.const 0) (i32.add)) (drop)) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (func $type-binary-1st-operand-empty-in-br_if + (i32.const 0) (i32.const 0) + (block (br_if 0 (i32.add) (i32.const 1)) (drop)) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (func $type-binary-2nd-operand-empty-in-br_if + (i32.const 0) + (block (br_if 0 (i32.const 0) (i32.add) (i32.const 1)) (drop)) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (func $type-binary-1st-operand-empty-in-br_table + (i32.const 0) (i32.const 0) + (block (br_table 0 (i32.add)) (drop)) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (func $type-binary-2nd-operand-empty-in-br_table + (i32.const 0) + (block (br_table 0 (i32.const 0) (i32.add)) (drop)) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (func $type-binary-1st-operand-empty-in-return + (return (i32.add)) (drop) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (func $type-binary-2nd-operand-empty-in-return + (return (i32.const 0) (i32.add)) (drop) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (func $type-binary-1st-operand-empty-in-select + (select (i32.add) (i32.const 1) (i32.const 2)) (drop) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (func $type-binary-2nd-operand-empty-in-select + (select (i32.const 0) (i32.add) (i32.const 1) (i32.const 2)) (drop) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (func $type-binary-1st-operand-empty-in-call + (call 1 (i32.add)) (drop) + ) + (func (param i32 i32) (result i32) (local.get 0)) + ) + "type mismatch" +) +(assert_invalid + (module + (func $type-binary-2nd-operand-empty-in-call + (call 1 (i32.const 0) (i32.add)) (drop) + ) + (func (param i32 i32) (result i32) (local.get 0)) + ) + "type mismatch" +) +(assert_invalid + (module + (func $f (param i32) (result i32) (local.get 0)) + (type $sig (func (param i32) (result i32))) + (table funcref (elem $f)) + (func $type-binary-1st-operand-empty-in-call_indirect + (block (result i32) + (call_indirect (type $sig) + (i32.add) (i32.const 0) + ) + (drop) + ) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (func $f (param i32) (result i32) (local.get 0)) + (type $sig (func (param i32) (result i32))) + (table funcref (elem $f)) + (func $type-binary-2nd-operand-empty-in-call_indirect + (block (result i32) + (call_indirect (type $sig) + (i32.const 0) (i32.add) (i32.const 0) + ) + (drop) + ) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (func $type-binary-1st-operand-empty-in-local.set + (local i32) + (local.set 0 (i32.add)) (local.get 0) (drop) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (func $type-binary-2nd-operand-empty-in-local.set + (local i32) + (local.set 0 (i32.const 0) (i32.add)) (local.get 0) (drop) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (func $type-binary-1st-operand-empty-in-local.tee + (local i32) + (local.tee 0 (i32.add)) (drop) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (func $type-binary-2nd-operand-empty-in-local.tee + (local i32) + (local.tee 0 (i32.const 0) (i32.add)) (drop) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (global $x (mut i32) (i32.const 0)) + (func $type-binary-1st-operand-empty-in-global.set + (global.set $x (i32.add)) (global.get $x) (drop) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (global $x (mut i32) (i32.const 0)) + (func $type-binary-2nd-operand-empty-in-global.set + (global.set $x (i32.const 0) (i32.add)) (global.get $x) (drop) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (memory 0) + (func $type-binary-1st-operand-empty-in-memory.grow + (memory.grow (i32.add)) (drop) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (memory 0) + (func $type-binary-2nd-operand-empty-in-memory.grow + (memory.grow (i32.const 0) (i32.add)) (drop) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (memory 0) + (func $type-binary-1st-operand-empty-in-load + (i32.load (i32.add)) (drop) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (memory 0) + (func $type-binary-2nd-operand-empty-in-load + (i32.load (i32.const 0) (i32.add)) (drop) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (memory 1) + (func $type-binary-1st-operand-empty-in-store + (i32.store (i32.add) (i32.const 1)) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (memory 1) + (func $type-binary-2nd-operand-empty-in-store + (i32.store (i32.const 1) (i32.add) (i32.const 0)) + ) + ) + "type mismatch" +) -;; ;; Type check +;; Type check -;; (assert_invalid (module (func (result i32) (i32.add (i64.const 0) (f32.const 0)))) "type mismatch") -;; (assert_invalid (module (func (result i32) (i32.and (i64.const 0) (f32.const 0)))) "type mismatch") -;; (assert_invalid (module (func (result i32) (i32.div_s (i64.const 0) (f32.const 0)))) "type mismatch") -;; (assert_invalid (module (func (result i32) (i32.div_u (i64.const 0) (f32.const 0)))) "type mismatch") -;; (assert_invalid (module (func (result i32) (i32.mul (i64.const 0) (f32.const 0)))) "type mismatch") -;; (assert_invalid (module (func (result i32) (i32.or (i64.const 0) (f32.const 0)))) "type mismatch") -;; (assert_invalid (module (func (result i32) (i32.rem_s (i64.const 0) (f32.const 0)))) "type mismatch") -;; (assert_invalid (module (func (result i32) (i32.rem_u (i64.const 0) (f32.const 0)))) "type mismatch") -;; (assert_invalid (module (func (result i32) (i32.rotl (i64.const 0) (f32.const 0)))) "type mismatch") -;; (assert_invalid (module (func (result i32) (i32.rotr (i64.const 0) (f32.const 0)))) "type mismatch") -;; (assert_invalid (module (func (result i32) (i32.shl (i64.const 0) (f32.const 0)))) "type mismatch") -;; (assert_invalid (module (func (result i32) (i32.shr_s (i64.const 0) (f32.const 0)))) "type mismatch") -;; (assert_invalid (module (func (result i32) (i32.shr_u (i64.const 0) (f32.const 0)))) "type mismatch") -;; (assert_invalid (module (func (result i32) (i32.sub (i64.const 0) (f32.const 0)))) "type mismatch") -;; (assert_invalid (module (func (result i32) (i32.xor (i64.const 0) (f32.const 0)))) "type mismatch") -;; (assert_invalid (module (func (result i32) (i32.eqz (i64.const 0)))) "type mismatch") -;; (assert_invalid (module (func (result i32) (i32.clz (i64.const 0)))) "type mismatch") -;; (assert_invalid (module (func (result i32) (i32.ctz (i64.const 0)))) "type mismatch") -;; (assert_invalid (module (func (result i32) (i32.popcnt (i64.const 0)))) "type mismatch") -;; (assert_invalid (module (func (result i32) (i32.eq (i64.const 0) (f32.const 0)))) "type mismatch") -;; (assert_invalid (module (func (result i32) (i32.ge_s (i64.const 0) (f32.const 0)))) "type mismatch") -;; (assert_invalid (module (func (result i32) (i32.ge_u (i64.const 0) (f32.const 0)))) "type mismatch") -;; (assert_invalid (module (func (result i32) (i32.gt_s (i64.const 0) (f32.const 0)))) "type mismatch") -;; (assert_invalid (module (func (result i32) (i32.gt_u (i64.const 0) (f32.const 0)))) "type mismatch") -;; (assert_invalid (module (func (result i32) (i32.le_s (i64.const 0) (f32.const 0)))) "type mismatch") -;; (assert_invalid (module (func (result i32) (i32.le_u (i64.const 0) (f32.const 0)))) "type mismatch") -;; (assert_invalid (module (func (result i32) (i32.lt_s (i64.const 0) (f32.const 0)))) "type mismatch") -;; (assert_invalid (module (func (result i32) (i32.lt_u (i64.const 0) (f32.const 0)))) "type mismatch") -;; (assert_invalid (module (func (result i32) (i32.ne (i64.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (result i32) (i32.add (i64.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (result i32) (i32.and (i64.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (result i32) (i32.div_s (i64.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (result i32) (i32.div_u (i64.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (result i32) (i32.mul (i64.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (result i32) (i32.or (i64.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (result i32) (i32.rem_s (i64.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (result i32) (i32.rem_u (i64.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (result i32) (i32.rotl (i64.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (result i32) (i32.rotr (i64.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (result i32) (i32.shl (i64.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (result i32) (i32.shr_s (i64.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (result i32) (i32.shr_u (i64.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (result i32) (i32.sub (i64.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (result i32) (i32.xor (i64.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (result i32) (i32.eqz (i64.const 0)))) "type mismatch") +(assert_invalid (module (func (result i32) (i32.clz (i64.const 0)))) "type mismatch") +(assert_invalid (module (func (result i32) (i32.ctz (i64.const 0)))) "type mismatch") +(assert_invalid (module (func (result i32) (i32.popcnt (i64.const 0)))) "type mismatch") +(assert_invalid (module (func (result i32) (i32.eq (i64.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (result i32) (i32.ge_s (i64.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (result i32) (i32.ge_u (i64.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (result i32) (i32.gt_s (i64.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (result i32) (i32.gt_u (i64.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (result i32) (i32.le_s (i64.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (result i32) (i32.le_u (i64.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (result i32) (i32.lt_s (i64.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (result i32) (i32.lt_u (i64.const 0) (f32.const 0)))) "type mismatch") +(assert_invalid (module (func (result i32) (i32.ne (i64.const 0) (f32.const 0)))) "type mismatch") -;; (assert_malformed -;; (module quote "(func (result i32) (i32.const nan:arithmetic))") -;; "unexpected token" -;; ) -;; (assert_malformed -;; (module quote "(func (result i32) (i32.const nan:canonical))") -;; "unexpected token" -;; ) +(assert_malformed + (module quote "(func (result i32) (i32.const nan:arithmetic))") + "unexpected token" +) +(assert_malformed + (module quote "(func (result i32) (i32.const nan:canonical))") + "unexpected token" +) |
