Source code

Revision control

Copy as Markdown

Other Tools

// Testing i64.mul in wasm with a 2 ** n +- 1 value as operand, which may
// be optimized in code generation.
var mulImmOperands = [];
for (let i = 0n; i < 64n; i++) {
mulImmOperands.push(2n ** i - 1n);
mulImmOperands.push(2n ** i + 1n);
}
for (const immVal of mulImmOperands) {
const ins = wasmEvalText(`(module
(func (export "mul_i64") (param i64) (result i64)
local.get 0
i64.const ${immVal}
i64.mul
))`);
assertEq(ins.exports.mul_i64(42n), BigInt.asIntN(64, 42n * immVal));
}