| import * as assert from '../assert.js' |
| import Builder from '../Builder.js' |
| |
| const b = new Builder(); |
| b.Type().End() |
| .Function().End() |
| .Export() |
| .Function("foo") |
| .Function("bar") |
| .End() |
| .Code() |
| .Function("bar", { params: ["f32", "f32"], ret: "f32" }, []) |
| .GetLocal(0) |
| .GetLocal(1) |
| .F32Sub() |
| .Return() |
| .End() |
| |
| .Function("foo", { params: ["f32", "f32"], ret: "f32" }, []) |
| .GetLocal(0) |
| .GetLocal(1) |
| .Call(0) |
| .Return() |
| .End() |
| .End() |
| |
| const bin = b.WebAssembly() |
| bin.trim(); |
| const instance = new WebAssembly.Instance(new WebAssembly.Module(bin.get())); |
| |
| let x = new Float32Array(3); |
| x[0] = 0; |
| x[1] = 1.5; |
| x[2] = x[0] - x[1]; |
| assert.eq(instance.exports.bar(x[0], x[1]), x[2]); |
| assert.eq(instance.exports.foo(x[0], x[1]), x[2]); |
| |
| x[0] = 100.1234 |
| x[1] = 12.5; |
| x[2] = x[0] - x[1]; |
| assert.eq(instance.exports.bar(x[0], x[1]), x[2]); |
| assert.eq(instance.exports.foo(x[0], x[1]), x[2]); |