1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
for (let numLocals of [3, 4, 5, 6, 17, 18, 19]) {
for (let numParams of [1, 2, 3, 4, 5, 6, 7, 8]) {
let locals = ` (local `;
let setLocals = ``;
let getLocals = ``;
let adds = ``;
let sum = 0;
for (let i = 0; i < numLocals; i++) {
sum += i + 1;
locals += `i32 `;
setLocals += ` (local.set ${i + 1} (i32.add (local.get 0) (i32.const ${i + 1})))\n`;
getLocals += ` local.get ${i + 1}\n`;
if (i > 0)
adds += ` i32.add\n`;
}
locals += `)\n`;
var callee = ` (func $f (param `;
var caller = ` (call $f `;
for (let i = 0; i < numParams; i++) {
callee += `f32 `;
caller += `(f32.const ${i}) `;
}
callee += `))\n`;
caller += `)\n`;
var code = `(module \n` +
callee +
` (func (export "run") (param i32) (result i32)\n` +
locals +
setLocals +
caller +
getLocals +
adds +
` )\n` +
`)`;
wasmFullPass(code, numLocals * 100 + sum, undefined, 100);
}
}
|