forked from LeenkxTeam/Kmake
33 lines
1.2 KiB
JavaScript
33 lines
1.2 KiB
JavaScript
|
|
// 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.addFunction('main', kSig_v_v)
|
||
|
|
.addLocals(kWasmS128, 2)
|
||
|
|
.addBody([
|
||
|
|
// Comments show the Liftoff trace on x64 that leads to the DCHECK.
|
||
|
|
// []; [v128:s0x30, v128:s0x40]
|
||
|
|
kExprLocalGet, 0,
|
||
|
|
// []; [v128:s0x30, v128:s0x40, v128:xmm0]
|
||
|
|
kExprLocalTee, 0,
|
||
|
|
// []; [v128:xmm0, v128:s0x40, v128:xmm0]
|
||
|
|
kExprLocalGet, 0,
|
||
|
|
// []; [v128:xmm0, v128:s0x40, v128:xmm0, v128:xmm0]
|
||
|
|
kExprLocalGet, 0,
|
||
|
|
// []; [v128:xmm0, v128:s0x40, v128:xmm0, v128:xmm0, v128:xmm0]
|
||
|
|
kExprLocalGet, 1,
|
||
|
|
// []; [v128:xmm0, v128:s0x40, v128:xmm0, v128:xmm0, v128:xmm0, v128:xmm1]
|
||
|
|
kExprLocalSet, 0,
|
||
|
|
// []; [v128:xmm1, v128:s0x40, v128:xmm0, v128:xmm0, v128:xmm0]
|
||
|
|
kSimdPrefix, kExprS128Select,
|
||
|
|
// Now src1 == src2 == src3. Since src3 (xmm0) is free, we reuse it for dst,
|
||
|
|
// but it also aliases src2 which is not supported.
|
||
|
|
kExprDrop,
|
||
|
|
]).exportFunc();
|
||
|
|
|
||
|
|
const module = builder.instantiate();
|
||
|
|
module.exports.main();
|