nodejs/deps/v8/test/mjsunit/regress/wasm/regress-328209289.js

43 lines
1.4 KiB
JavaScript
Raw Permalink Normal View History

// Copyright 2024 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
d8.file.execute('test/mjsunit/wasm/wasm-module-builder.js');
const builder = new WasmModuleBuilder();
builder.addMemory(1, 1);
builder.addFunction("main", kSig_i_v).exportFunc().addBody([
kExprF32Const, 0x11, 0x00, 0xc0, 0xff,
kExprF32Const, 0x22, 0x00, 0xc0, 0xff,
kExprI32Const, 0, // Address.
kExprI32LoadMem, 2, 0, // Alignment, offset.
kExprSelect,
kExprI32ReinterpretF32,
]);
builder.addFunction("reinterpret", kSig_i_v).exportFunc().addBody([
...wasmI32Const(0xffc00011),
kExprF32ReinterpretI32,
...wasmI32Const(0xffc00022),
kExprF32ReinterpretI32,
kExprI32Const, 0, // Address.
kExprI32LoadMem, 2, 0, // Alignment, offset.
kExprSelect,
kExprI32ReinterpretF32,
]);
builder.addFunction("gvn", makeSig([], [kWasmI32, kWasmI32])).exportFunc().addBody([
kExprF32Const, 0x11, 0x00, 0xc0, 0xff,
kExprI32ReinterpretF32,
kExprF32Const, 0x11, 0x00, 0xe0, 0xff, // Note difference in third byte.
kExprI32ReinterpretF32,
]);
const instance = builder.instantiate();
assertEquals(0xffc00022, instance.exports.main() >>> 0);
assertEquals(0xffc00022, instance.exports.reinterpret() >>> 0);
let fs = instance.exports.gvn();
assertEquals(0xffc00011, fs[0] >>> 0);
assertEquals(0xffe00011, fs[1] >>> 0);