blob: b34654165c0a84bd9ea1a1a6c7bfe824eef7dc29 [file] [edit]
import { instantiate } from "../wabt-wrapper.js"
import * as assert from "../assert.js"
let wat = `
(module
(func (export "eqz") (param i64) (result i32)
(local.get 0)
(i64.eqz)
(return)
)
(func (export "eq") (param i64 i64) (result i32)
(local.get 0)
(local.get 1)
(i64.eq)
(return)
)
(func (export "ne") (param i64 i64) (result i32)
(local.get 0)
(local.get 1)
(i64.ne)
(return)
)
(func (export "lt_s") (param i64 i64) (result i32)
(local.get 0)
(local.get 1)
(i64.lt_s)
(return)
)
(func (export "lt_u") (param i64 i64) (result i32)
(local.get 0)
(local.get 1)
(i64.lt_u)
(return)
)
(func (export "gt_s") (param i64 i64) (result i32)
(local.get 0)
(local.get 1)
(i64.gt_s)
(return)
)
(func (export "gt_u") (param i64 i64) (result i32)
(local.get 0)
(local.get 1)
(i64.gt_u)
(return)
)
(func (export "le_s") (param i64 i64) (result i32)
(local.get 0)
(local.get 1)
(i64.le_s)
(return)
)
(func (export "le_u") (param i64 i64) (result i32)
(local.get 0)
(local.get 1)
(i64.le_u)
(return)
)
(func (export "ge_s") (param i64 i64) (result i32)
(local.get 0)
(local.get 1)
(i64.ge_s)
(return)
)
(func (export "ge_u") (param i64 i64) (result i32)
(local.get 0)
(local.get 1)
(i64.ge_u)
(return)
)
)
`
async function test() {
const instance = await instantiate(wat, {});
const { eqz, eq, ne, lt_s, lt_u, gt_s, gt_u, le_s, le_u, ge_s, ge_u }= instance.exports
assert.eq(eqz(0n), 1)
assert.eq(eqz(1n), 0)
assert.eq(eq(0n, 0n), 1)
assert.eq(eq(1n, 2n), 0)
assert.eq(ne(0n, 0n), 0)
assert.eq(ne(1n, 2n), 1)
assert.eq(lt_s(-1n, 1n), 1)
assert.eq(lt_s(1n, 1n), 0)
assert.eq(lt_u(-1n, 1n), 0)
assert.eq(lt_u(1n, 2n), 1)
assert.eq(gt_s(1n, -1n), 1)
assert.eq(gt_s(1n, 1n), 0)
assert.eq(gt_u(1n, -1n), 0)
assert.eq(gt_u(2n, 1n), 1)
assert.eq(le_s(-1n, 1n), 1)
assert.eq(le_s(1n, 1n), 1)
assert.eq(le_u(-1n, 1n), 0)
assert.eq(le_u(1n, 2n), 1)
assert.eq(ge_s(1n, -1n), 1)
assert.eq(ge_s(1n, 1n), 1)
assert.eq(ge_u(1n, -1n), 0)
assert.eq(ge_u(2n, 1n), 1)
}
await assert.asyncTest(test())